C#中将ListView中数据导出到Excel的实例方法

添加方法:选择项目->引用->右击“添加引用”->选择COM 找到上面组件—>点击“确定”。
实现代码如下:

代码如下:

private void 导出数据_Click(object sender, EventArgs e) 
    {     
    ExportToExecl(); 
    }  
    /// <summary>   
    /// 执行导出数据
    /// </summary>
    public void ExportToExecl()
    {     
    System.Windows.Forms.SaveFileDialog sfd = new SaveFileDialog();  
    sfd.DefaultExt = "xls";   
    sfd.Filter = "Excel文件(*.xls)|*.xls";     
    if (sfd.ShowDialog() == DialogResult.OK)  
    {          
    DoExport(this.lstPostion, sfd.FileName); 
    }   
    }   
    /// <summary>
    /// 具体导出的方法
    /// </summary>  
    /// <param name="listView">ListView</param>  
    /// <param name="strFileName">导出到的文件名</param>  
    private void DoExport(ListView listView, string strFileName)   
    {      
    int rowNum = listView.Items.Count;  
    int columnNum = listView.Items[0].SubItems.Count;
    int rowIndex = 1;      
    int columnIndex = 0;      
    if (rowNum == 0 || string.IsNullOrEmpty(strFileName))  
    {           
    return;      
    }      
    if (rowNum > 0)   
    {         
    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); 
    if (xlApp == null)       
    {            
    MessageBox.Show("无法创建excel对象,可能您的系统没有安装excel"); 
    return;         
    }         
    xlApp.DefaultFilePath = "";   
    xlApp.DisplayAlerts = true;       
    xlApp.SheetsInNewWorkbook = 1;     
    Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);  
    //将ListView的列名导入Excel表第一行           
    foreach (ColumnHeader dc in listView.Columns)  
    {            
    columnIndex++;     
    xlApp.Cells[rowIndex, columnIndex] = dc.Text;  
    }           
    //将ListView中的数据导入Excel中       
    for (int i = 0; i < rowNum; i++)     
    {             
    rowIndex++;     
    columnIndex = 0;   
    for (int j = 0; j < columnNum; j++)   
    {                   
    columnIndex++;             
    //注意这个在导出的时候加了“\t” 的目的就是避免导出的数据显示为科学计数法。可以放在每行的首尾。    
    xlApp.Cells[rowIndex, columnIndex] = Convert.ToString(listView.Items[i].SubItems[j].Text) + "\t";     
    }        
    }       
    //例外需要说明的是用strFileName,Excel.XlFileFormat.xlExcel9795保存方式时 当你的Excel版本不是95、97 而是2003、2007 时导出的时候会报一个错误:异常来自 HRESULT:0x800A03EC。 解决办法就是换成strFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal。          
    xlBook.SaveAs(strFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);  
    xlApp = null;          
    xlBook = null;       
    MessageBox.Show("OK");      
    }  
    }

(0)

相关推荐

  • C#实现带进度条的ListView

    推荐阅读:ListView 百分比进度条(delphi版) 对于已经有的组件,可以直接添加进来,添加后要先运行一下,然后会在工具箱内找到相应控件. 1.首先编写组件,然后将组件添加到工具箱内 编写代码如下: public partial class ListViewEx : System.Windows.Forms.ListView { public ListViewEx() { InitializeComponent(); } //C# listview进度条显示 private Color

  • C# listview添加combobox到单元格的实现代码

    实现代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplicat

  • C# Winform 禁止用户调整ListView的列宽

    复制代码 代码如下: // 事件: 改变列宽的时候 private void ColumnWidthChange(object sender, ColumnWidthChangingEventArgs e) { // 如果调整的不是第一列,就不管了 if (e.ColumnIndex > 0) return; // 取消掉正在调整的事件 e.Cancel = true; // 把新宽度恢复到之前的宽度 e.NewWidth = this.lvStudents.Columns[e.ColumnIn

  • C#实现listview Group收缩扩展的方法

    本文实例讲述了C#实现listview Group收缩扩展的方法.分享给大家供大家参考,具体如下: 1.本实例是完善了codeprofect上面charju老师"Add Group Collapse Behavior on a Listview Control"的一个限制(点击分组后面的图标不能收缩和扩展): 2.本实列适用于win2008,vista: 3.仅供参考,如有更好的方法,望大家不吝交流~ 完整代码如下(只需建一个windows工程,在窗体上拖一个listview控件,取名

  • c#数据绑定之将datatabel的data添加listView

    功能:通过响应UI Textbox 的值向ListView 绑定新添加的纪录. UI XAML 代码 复制代码 代码如下: <Grid Margin="5">            <Grid.ColumnDefinitions>                <ColumnDefinition Width="Auto"/>                <ColumnDefinition/>            &

  • C# ListView双击Item事件

    复制代码 代码如下: private void listView右侧_MouseDoubleClick( object sender , MouseEventArgs e ) { ListViewHitTestInfo info = listView右侧.HitTest (e.X , e.Y); if( info.Item != null ) { MessageBox.Show (info.Item.Text); } }

  • C#使用listView增删操作实例

    本文实例讲述了C#使用listView增删操作的方法.分享给大家供大家参考.具体分析如下: 应用场景: C#中使用listView控件,实现动态添加,选中删除等操作. 实例代码: 复制代码 代码如下: private void addButton_Click(object sender, EventArgs e) {     string item1Str = coutNumber.ToString();//第一列文本     string item2Str = coutNumber.ToStr

  • C#实现ListView选中项向上或向下移动的方法

    本文实例讲述了C#实现ListView选中项向上或向下移动的方法.分享给大家供大家参考.具体实现方法如下: private void buttonUp_Click(object sender, EventArgs e) { if (listView.SelectedItems.Count > 0 && listView.SelectedItems[0].Index != 0) { listView.BeginUpdate(); foreach (ListViewItem lvi in

  • ListView用法中与滚动相关的需求实现

    在 App 的开发过程中,ListView 控件是比较常用的控件之一.掌握它的用法,能帮助我们在一定程度上提高开发效率.本文将会介绍 ListView 的一种用法--获取并设置ListView的滚动位置,以及获取滚动位置处的项目.这里多说一句,由于这个描述有点,所以本文的标题实在不好起. 举个例子,如果你正在开发的应用有这样一个需求,当用户从一个列表页(包括 ListView 控件)返回到前一页面时,你需要得到用户在浏览 ListView 中的内容到哪个位置以及哪一项了,以便告诉用户最近浏览项,

  • C#实现读取DataSet数据并显示在ListView控件中的方法

    本文实例讲述了C#实现读取DataSet数据并显示在ListView控件中的方法.分享给大家供大家参考.具体如下: /*lvStudentList为ListView控件名 */ DataSet ds = new DataSet(); ds = student.QueryStudents(); //查询表的信息 int rowCount, columnCount,i,j; rowCount = ds.Tables[0].Rows.Count; columnCount = ds.Tables[0].

随机推荐