怎么由DataSet將數據導入Excel?
2024-07-21 02:22:59
供稿:網友
 
/// <summary>
 /// 將dataset里所有數據導入excel.
 /// 需要添加com: microsoft excel object library.
 /// using excel;
 /// </summary>
 /// <param name="filepath"></param>
 /// <param name="ds"></param>
 public static void exporttoexcel(string filepath, dataset ds)
 {
 object omissing = system.reflection.missing.value;
 excel.applicationclass xlapp = new excel.applicationclass();
 try
 {
 // 打開excel文件。以下為office 2000.
 excel.workbook xlworkbook = xlapp.workbooks.open(filepath, omissing, omissing, omissing, omissing, omissing, 
 omissing, omissing, omissing, omissing, omissing, omissing,
 omissing);
 excel.worksheet xlworksheet;
 // 循環所有datatable
 for( int i=0; i<ds.tables.count; i++ )
 {
 // 添加入一個新的sheet頁。
 xlworksheet = (excel.worksheet)xlworkbook.worksheets.add(omissing,omissing,1,omissing);
 // 以tablename作為新加的sheet頁名。
 xlworksheet.name = ds.tables[i].tablename;
 // 取出這個datatable中的所有值,暫存于stringbuffer中。
 string stringbuffer = "";
 for( int j=0; j<ds.tables[i].rows.count; j++ )
 {
 for( int k=0; k<ds.tables[i].columns.count; k++ )
 {
 
 stringbuffer += ds.tables[i].rows[j][k].tostring();
 if( k < ds.tables[i].columns.count - 1 )
 stringbuffer += "/t";
 }
 stringbuffer += "/n";
 }
 // 利用系統剪切板
 system.windows.forms.clipboard.setdataobject("");
 // 將stringbuffer放入剪切板。
 system.windows.forms.clipboard.setdataobject(stringbuffer);
 // 選中這個sheet頁中的第一個單元格
 ((excel.range)xlworksheet.cells[1,1]).select();
 // 粘貼!
 xlworksheet.paste(omissing,omissing);
 // 清空系統剪切板。
 system.windows.forms.clipboard.setdataobject("");
 }
 // 保存并關閉這個工作簿。
 xlworkbook.close( excel.xlsaveaction.xlsavechanges, omissing, omissing );
 system.runtime.interopservices.marshal.releasecomobject(xlworkbook);
 xlworkbook = null;
 }
 catch(exception ex)
 {
 messagebox.show(ex.message);
 }
 finally
 {
 // 釋放...
 xlapp.quit();
 system.runtime.interopservices.marshal.releasecomobject(xlapp);
 xlapp = null;
 gc.collect();
 }
 }