1
我編寫了一個程序,用於從數據庫中查詢並創建一個包含查詢結果的xml文件。如何使包含xml文件中的元素的啓用宏的excel文件?C#從我自己的XML文件中創建一個excel文件
這裏是其位於我的驅動器C的XML文件的一個短樣品:(I置換爲XXXX一些份)
<JobSvc environment="TEST" dateTo="6/22/2015" dateFrom="2015-06-15T00:00:00+08:00">
<process server="XXXX" type="XXXX" name="XXXX">
<processId duration="2421" eventTime="6/1/2015 11:41:26 AM" source="TEST SOURCE" num="3">PROCESS ID</processId>
</process>
</JobSvc>
這是我在從XML文件生成excel文件嘗試(我從互聯網上得到它,不幸的是,這是行不通的,但它也因爲我的計劃例外創建日誌不會產生異常或錯誤..):
public void xmlToExcel()
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
DataSet ds = new DataSet();
XmlReader xmlFile;
int i = 0;
int j = 0;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xmlFile = XmlReader.Create(@"C:\PerformanceMonitorXML " + DateTime.Now.ToString("dd_MM_yyyy") + ".xml", new XmlReaderSettings());
ds.ReadXml(xmlFile);
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
{
xlWorkSheet.Cells[i + 1, j + 1] = ds.Tables[0].Rows[i].ItemArray[j].ToString();
}
}
xlWorkBook.SaveAs("C\\PerformanceMonitorExcel " + DateTime.Now.ToString("dd_MM_yyyy") + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlApp);
releaseObject(xlWorkBook);
releaseObject(xlWorkSheet);
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
}
finally
{
GC.Collect();
}
}
我會嘗試。 –
我得到這個異常: 'System.IO.IOException:進程無法訪問文件'C:\ PerformanceMonitorXML 06_07_2015.xml',因爲它正在被另一個進程使用。順便說一句,我在Windows服務上運行這個代碼,上面的異常是由我的日誌創建者創建的...我沒有打開該文件,我不知道爲什麼它給了我這種異常。 –
當我打開任務管理器時,有多個EXCEL.exe實例* 32 –