分享

C#输出Excel表格

 昵称QAb6ICvc 2013-01-31

关于c#操作Excel表格的代码,网上一搜一堆,之前在给测绘局写插件的时候就写过了。下面的代码是让小师弟Z写的,写的很不错,我拿过来直接就可以用了。从中貌似我发现了我之前存在的一个问题,就是相应的资源在使用完之后没有及时释放掉,有时就会Excel表格报错。查了下,少了一句代码System.Runtime.InteropServices.Marshal.ReleaseComObject(xlapp);

下面的代码是将DataTable中的数据输出到Excel表格中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
private void btnExportExcel_Click(object sender, EventArgs e)
{
    SaveFileDialog saveDlg = new SaveFileDialog();
    saveDlg.DefaultExt = "xls";
    saveDlg.Title = "输出断面表格";
    saveDlg.Filter = "Excel文件(.xls)|*.xls";
    if(saveDlg.ShowDialog()==DialogResult.OK)
    {
        try
        {
            string strExcelName = saveDlg.FileName;
            Excel.Application xlapp = default(Excel.Application);
            Excel.Workbook xlbook = default(Excel.Workbook);
            Excel.Worksheet xlsheet = default(Excel.Worksheet);
            xlapp = new Excel.Application();
            xlapp.Visible = false;
            xlapp.DisplayAlerts = false;
  
            System.Object missing = Type.Missing;
            xlbook = xlapp.Workbooks.Add(missing);
            xlsheet = (Excel.Worksheet)xlbook.Worksheets[1];
  
            for (int m = 0; m < dt.Columns.Count;m++ )
            {
                xlsheet.Cells[1, m + 1] = dt.Columns[m].ColumnName;
            }
  
            for (int i = 0; i < dt.Rows.Count;i++ )
            {
                for (int j = 0; j < dt.Columns.Count;j++ )
                {
                    xlsheet.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();
                }
            }
  
            xlbook.SaveCopyAs(strExcelName);
            xlapp.Workbooks.Close();
            xlapp.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlapp);
            xlsheet = null;
            xlbook = null;
            xlapp = null;
  
            MessageBox.Show("Excel导出成功");
  
        }
        catch (Exception ex)
        {
            MessageBox.Show("保存出错,原因如下:"+ex.Message.ToString());
        }
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多