,有人說此方法很快,不使用Web,web可以用二維數(shù)組
1 private void ExportToExcel(String strDBPath)
2 {
3 String AccessConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+strDBPath; System.Data.OleDb.OleDbConnection con=new System.Data.OleDb.OleDbConnection(AccessConnectionString); System.Data.OleDb.OleDbDataAdapter oda=new System.Data.OleDb.OleDbDataAdapter("select * from test1",con);
4 System.Data.DataTable dt=new System.Data.DataTable();
5 oda.Fill(dt);
6 con.Close();
7
8 String strFilePath="D:\\test.xls";
9 Object oMissing=System.Reflection.Missing.Value;
10 Excel.ApplicationClass xlApp=new Excel.ApplicationClass();
11 try
12 { xlApp.Visible=false; xlApp.DisplayAlerts=false; Excel.Workbooks oBooks=xlApp.Workbooks; Excel.Workbook xlWorkbook=null; xlWorkbook=oBooks.Open(strFilePath,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing); Excel.Worksheet xlWorksheet;
13 //添加一個(gè)新的Sheet頁
14 xlWorksheet=(Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing);
15 //以TableName作為新加的Sheet頁名 xlWorksheet.Name="企業(yè)";
16 //取出這個(gè)DataTable中的所有值,暫存于stringBuffer中
17 String stringBuffer="";
18 for(Int32 j=0;j<dt.Rows.Count;j++)
19 {
20 for(Int32 k=0;k<dt.Columns.Count;k++)
21 { stringBuffer+=dt.Rows[j][k].ToString(); if(k<dt.Columns.Count-1) stringBuffer+="\t";
22 } stringBuffer+="\n";
23 }
24 //利用系統(tǒng)剪貼板 System.Windows.Forms.Clipboard.SetDataObject("");
25 //將stringBuffer放入剪貼板 System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);
26 //選中這個(gè)sheet頁中的第一個(gè)單元格
27 ((Excel.Range)xlWorksheet.Cells[1,1]).Select();
28 //粘貼 xlWorksheet.Paste(oMissing,oMissing);
29 //清空系統(tǒng)剪貼板 System.Windows.Forms.Clipboard.SetDataObject("");
30
31 //保存并關(guān)閉這個(gè)工作薄 xlWorkbook.Close(Excel.XlSaveAction.xlSaveChanges,oMissing,oMissing); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook); xlWorkbook=null;
32 xlApp.Quit();
33 xlApp=null;
34 }
35 catch(Exception ex)
36 {
37 MessageBox.Show(ex.Message);
38 }
39 }
40