如何在C#中調用Excel

如何在C#中調用Excel spa

1.調用Excel的COM組件。
在項目中打開AddReference對話框,選擇COM欄,以後在COM列表中找到"Microsoft
Excel11.0ObjectLibrary"(Office2003),而後將其加入到項目的References中便可。
VisualC#.NET會自動產生相應的.NET組件文件,之後便可正常使用。
2.打開Excel表格
Excel.Applicationexcel=newExcel.Application();//引用Excel對象
Excel.Workbookbook=excel.Application.Workbooks.Add(Missing.Value);//引用
Excel工做簿
excel.Visible=bVisible;//使Excel可視
有時調用excel.Application.Workbooks.Add(Missing.Value)會遇到以下錯誤:
Exception:
Oldformatorinvalidtypelibrary.(ExceptionfromHRESULT:0x80028018
(TYPE_E_INVDATAREAD))
這是Excel自身的一個bug,當本地系統環境被設置成非英文的,而Excel是英文的時候,
就會出現,須要臨時設定英文環境,代碼以下:
System.Globalization.CultureInfoCurrentCI=
System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture=new
System.Globalization.CultureInfo("en-US");
3.往Excel表格中插入數據
Excel.Worksheetsheet=(Excel.Worksheet)book.Worksheets["Sheet1"];//選中
當前新建Sheet(通常爲Sheet1)
有兩種插入方法
a.逐格插入數據
sheet.Cells[iRow,iCol]=value;//左上角第一格的座標是[1,1]
b.按塊插入數據
object[,]objVal=newobject[Height,Length];
//設置數據塊
Excel.Rangerange=sheet.get_Range(sheet.Cells[iRow,iCol],sheet.Cells[iRow
+Height,iCol+Length])
range.Value2=objVal;
4.清理內存和恢復環境
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
while(System.Runtime.InteropServices.Marshal.ReleaseComObject(excel)>0);
range=null;
sheet=null;
book=null;
excel=null;
GC.Collect();
System.Threading.Thread.CurrentThread.CurrentCulture=CurrentCI; excel

相關文章
相關標籤/搜索