关于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()); } } } |