0

こんにちは、ここに私の問題があります。現在、Web ブラウザー コントロールを持つスタンドアロンの WPF アプリケーションを使用しています。Web ブラウザーのコンテンツとして使用する HTML ページを生成する C# のコードがあります。私の問題は、この 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);

2 つの違いは、XML ドキュメントを xlXMLSpreadsheet として保存する代わりに、ファイルを xlWorkBookNormal として保存する必要があることです。この変更を行うと、ファイルを Excel ドキュメントとして保存し、画像を含めることができました。私がより興味深い問題と考えていたものに対する簡単な解決策。

于 2012-12-10T18:24:10.880 に答える