Create Excel report
来源:互联网 发布:ubuntu编译openjdk7 编辑:程序博客网 时间:2024/06/07 00:00
private Application myExcel = null; private Workbook myWorkbook; public void CreateDailyReport() { string fileTemplate = "SSQLDailyReport.$d.$t.xls"; XmlTextReader reader = new XmlTextReader(myAppSettings["DailyXMLFilePath"]); myReportConfig.ReadXml(reader); myAuditLogger.logAuditMessage("Creat new excel document for SSQL Daily Report."); myExcel = new Excel.Application(); if (myExcel == null) { myAuditLogger.logAuditMessage("Error : Excel can not be started!"); return; } Workbooks workbooks = myExcel.Workbooks; myWorkbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); Sheets sheets = myWorkbook.Worksheets; try { #region generate the daily summary report Worksheet summarySheet = (Worksheet)sheets.get_Item(1); LogWorkSheet(summarySheet, "Daily Summary"); sheets.Add(Type.Missing, summarySheet, 1, Type.Missing); myAuditLogger.logAuditMessage("Start to generate Daily Summary Report..."); CreateReportHeader("Daily", "SUMMARY", myEodDate, summarySheet); foreach (DataRow dr in myReportConfig.Tables["Part"].Rows) CreateDailySummary(dr["Name"].ToString(), dr["Type"].ToString(), myReportConfig.Tables["Item"].Select(string.Format("Part_Id = {0}", Convert.ToInt32(dr["Part_Id"]))), summarySheet); CreateDailyReviw(summarySheet); myAuditLogger.logAuditMessage("Generate Daily Summary Report successfully!"); #endregion #region generate daily detail reports int sheetCount = 1; foreach (DataRow dr in myReportConfig.Tables["Part"].Rows) { if (dr["Name"].ToString() == "Support AdHoc" || dr["Type"].ToString() == "S") { Worksheet sheet = (Worksheet)sheets.get_Item(++sheetCount); if (dr["Name"].ToString() == "ScratchPad") LogWorkSheet(sheet, string.Format("Details ({0}-W)", dr["Name"].ToString())); else LogWorkSheet(sheet, string.Format("Details ({0})", dr["Name"].ToString())); if (sheetCount <= (myReportConfig.Tables["Part"].Select("Name = 'Support AdHoc'").Length + myReportConfig.Tables["Part"].Select("Type = 'S'").Length)) sheets.Add(Type.Missing, sheet, 1, Type.Missing); index = 0; if (dr["Name"].ToString() == "ScratchPad") CreateReportHeader("Daily", string.Format("DETAIL FOR {0}-W", dr["Name"].ToString().ToUpper()), myEodDate, sheet); else CreateReportHeader("Daily", string.Format("DETAIL FOR {0}", dr["Name"].ToString().ToUpper()), myEodDate, sheet); CreateDailyDetail(dr["Name"].ToString(), dr["Type"].ToString(), myReportConfig.Tables["Item"].Select(string.Format("Part_Id = {0} and Detail = 'T'", Convert.ToInt32(dr["Part_Id"]))), sheet); myExcel.ActiveWindow.DisplayGridlines = false; } } #endregion myReportPath += myAuditLogger.ProduceFileName(fileTemplate); summarySheet.Activate(); myWorkbook.Close(true, myReportPath, Missing.Value); OurDiagnostics.LogInfo("The report file path is " + myReportPath); } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(myWorkbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel); } }