1. 程式人生 > >C#實現向已存在的Excel檔案中寫入資料例項(兩種方法)

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);