怎么由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();
}
}