簡體   English   中英

具有C#代碼的WPF,可生成可導出到Excel並包含圖像的HTML

[英]WPF with C# code that generates HTML that exports to Excel and include images

您好,這是我的問題。 我目前有一個帶有Web瀏覽器控件的獨立WPF應用程序。 我有一些C#代碼,可生成HTML頁面,並將其用作Web瀏覽器的內容。 我的問題是我正在嘗試將此HTML頁面導出為ex​​cel,並在其中包含圖像。 這是我當前將HTML導出到EXCEL文件的方式:

  string filePath = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".html";

  //Creates an HTML file from the web browser and save it to a temp location
  File.WriteAllText(filePath, GenerateHtml());

  //Creates a new instance of Microsoft office interop for using MS Excel
  Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
  //Create a new instance of a workbook
  Microsoft.Office.Interop.Excel.Workbook excelWorkBook = excelApp.Workbooks.Add();
  //Don't Show MS Excel
  excelApp.Visible = false;
  //Open a file at location
  Microsoft.Office.Interop.Excel.Workbook excelWorkBook2 = excelApp.Workbooks.Open(filePath);
  //Convert that file to an XLSX document

  SaveFileDialog newSFD = new SaveFileDialog();
  newSFD.FileName = "Report in Excel Format";
  newSFD.DefaultExt = ".xls";
  newSFD.Filter = "XLS Documents (.xls)|*.xls";
  Nullable<bool> result = newSFD.ShowDialog();

  if (result == true)
  {
    string fileName = newSFD.FileName;
    excelWorkBook2.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlXMLSpreadsheet, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true, Missing.Value, Missing.Value, Missing.Value);
    //Close excel
    excelApp.Quit();
  }

一切都可以導出,並且所有信息都在那里,但是由於某種原因,沒有圖像。 有圖像的桌子在那里,有圖像的位置有占位符,這就是為什么我很困惑。 如果需要進一步的說明,請告訴我,我會提供,否則,謝謝您對這個問題的幫助/關注。

因此,經過大量的探索/嘗試和錯誤以及研究,我找到了解決方案,而且一如既往地就在您的面前。 問題只是當我將XML文檔另存為excel文件時(如我以這種方式處理它的問題所示):

excelWorkBook2.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlXMLSpreadsheet, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true, Missing.Value, Missing.Value, Missing.Value);

實際上,我應該這樣保存它:

excelWorkBook2.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true, Missing.Value, Missing.Value, Missing.Value);

兩者之間的區別在於,我需要將文件另存為xlWorkBookNormal,而不是將XML文檔另存為xlXMLSpreadsheet。 進行此更改后,它使我可以將文件另存為excel文檔並包括圖像。 我認為更有趣的問題的簡單解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM