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);
}
}
Create Excel report
最新推荐文章于 2024-07-05 08:59:17 发布