C#實現向已存在的Excel檔案中寫入資料例項(兩種方法)
//新增引用
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
方法一:將識別結果寫入到Excel表格中(根據指定模版寫入,並將其以當前儲存時間命名另存)
/******************** WriteValuetoExcel added by cxj 2015.8.10 **************/
//1.建立一個Excel 應用程式
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); //app = null ,則代表伺服器上“伺服器上缺少Excel元件,需要安裝Office軟體”;
//設定app屬性,及其進行如下操作
app.Visible = false;
app.UserControl = true;
Microsoft.Office.Interop.Excel.Workbooks workbooks = app.Workbooks;
Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(@"E:\PassData\Template.xlsx"); //載入模板
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1); //第一個工作薄。
if (worksheet == null)
return; //工作薄中沒有工作表.
//2.根據獲得的資料,進行資料的插入(到Excel模板中)
int row_ = 4; //Excel模板上表頭和標題行佔了3行,根據實際模板需要修改;
worksheet.Cells[row_, 10] = total.ToString(); //J4 車輛數
worksheet.Cells[row_, 13] = invalid.ToString(); //M4 無效
worksheet.Cells[row_, 14] = wrongCH.ToString(); //N4 漢字錯
worksheet.Cells[row_, 15] = wrongEN.ToString(); //O4 字元錯
worksheet.Cells[row_, 16] = wrongNU.ToString(); //P4 數字錯
worksheet.Cells[row_, 17] = wrongCL.ToString(); //Q4 不識別
worksheet.Cells[row_, 20] = wrong.ToString(); //T4 錯誤
worksheet.Cells[row_, 21] = right.ToString(); //U4 正確
//3.對已匯出好的Excel報表進行儲存到指定路徑下,以便進行檢視。
//Missing 在System.Reflection名稱空間下。
string savaPath = @"E:\PassData\" + DateTime.Now.ToString("yyyy_MM_dd_HHmmss") + ".xlsx";
workbook.SaveAs(savaPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
MessageBox.Show(summary, "提示", MessageBoxButtons.OK);
//4.關閉Excel物件
workbook.Close(Missing.Value, Missing.Value, Missing.Value);
app.Quit();
//**********************************************************/
方法二:將識別結果寫入到Excel表格中(在指定模版上直接寫入)
//1.建立Applicaton物件
Excel.Application xApp = new Excel.Application();
xApp.Visible = true;
//2.得到workbook物件,可以用兩種方式之一:下面是開啟已有的檔案
//Excel.Workbook xBook = xApp.Workbooks.Open(@"E:\5_除錯軟體\ThinkCamWorkstation\PassData\192.168.116.248\2015-08-06\18\result.xlsx",
Excel.Workbook xBook = xApp.Workbooks.Open(path + "\\result.xlsx",
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//3.指定要操作的Sheet
Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Sheets[1];
//4.寫入資料
Excel.Range carAmount = xSheet.get_Range("J4", Missing.Value);
carAmount.Value2 = total;
carAmount.Interior.ColorIndex = 3; //裝置Range的背景色
Excel.Range invalid_license_plate = xSheet.get_Range("M4", Missing.Value);
invalid_license_plate.Value2 = invalid;
invalid_license_plate.Interior.ColorIndex = 3; //裝置Range的背景色
Excel.Range chinese_character_wrong = xSheet.get_Range("N4", Missing.Value);
chinese_character_wrong.Value2 = wrongCH;
chinese_character_wrong.Interior.ColorIndex = 3; //裝置Range的背景色
Excel.Range letter_wrong = xSheet.get_Range("O4", Missing.Value);
letter_wrong.Value2 = wrongEN;
letter_wrong.Interior.ColorIndex = 3; //裝置Range的背景色
Excel.Range number_wrong = xSheet.get_Range("P4", Missing.Value);
number_wrong.Value2 = wrongNU;
number_wrong.Interior.ColorIndex = 3; //裝置Range的背景色
Excel.Range recognition_wrong = xSheet.get_Range("Q4", Missing.Value);
recognition_wrong.Value2 = wrongCL;
recognition_wrong.Interior.ColorIndex = 3; //裝置Range的背景色
Excel.Range wrong_amount = xSheet.get_Range("T4", Missing.Value);
wrong_amount.Value2 = wrong;
wrong_amount.Interior.ColorIndex = 3; //裝置Range的背景色
Excel.Range right_amount = xSheet.get_Range("U4", Missing.Value);
right_amount.Value2 = right;
right_amount.Interior.ColorIndex = 3; //裝置Range的背景色
//5.儲存儲存WorkBook
xBook.Save();
//6.從記憶體中關閉Excel物件
xSheet = null;
xBook = null;
xApp.Quit(); //這一句非常重要,否則Excel物件不能從記憶體中退出
xApp = null;
MessageBox.Show(summary, "提示", MessageBoxButtons.OK);