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

原创粉丝点击