C#实现向已存在的Excel文件中写入数据实例(两种方法)

来源:互联网 发布:淘宝彩票网合法的吗 编辑:程序博客网 时间:2024/06/05 16:15

 //添加引用
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);


0 0