0

你好,这是我的问题。我目前有一个具有 Web 浏览器控件的独立 WPF 应用程序。我有一些 C# 代码,它生成一个 HTML 页面,我将其用作 Web 浏览器的内容。我的问题是我正在尝试将此 HTML 页面导出到 excel 并包含其中的图像。这就是我目前将 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();
  }

一切都可以导出,所有信息都在那里,但由于某种原因没有图像。图像应该在那里的桌子在那里,它有图像应该去的地方占位符,这就是为什么我很困惑。如果需要更多解释,请告诉我,我会提供,否则感谢您对此问题的帮助/关注。

4

1 回答 1

0

因此,经过大量挖掘/反复试验和研究,我找到了我的解决方案,并且一如既往地摆在你面前。问题只是当我将 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);

两者之间的区别在于,我不需要将 XML 文档保存为 xlXMLSpreadsheet,而是需要将文件保存为 xlWorkBookNormal。进行此更改后,我可以将文件另存为 Excel 文档,并将图像连同它一起包含在内。我认为更有趣的问题的简单解决方案。

于 2012-12-10T18:24:10.880 回答