2017-12-09 15 views
-1

イメージを含むaspxページをワードドキュメントにエクスポートしようとしています。 .doc形式でこれを達成しようとすると、docという単語に壊れた画像が表示されます。私は.docx形式でダウンロードしようとしましたが、.docxのコードを修正した後、ファイルを開くと破損したエラーが出ます。私のコードは以下の通りです:asp.netをダウンロードした後に破損した.docxドキュメントC#

<body> 
     <form id="form1" runat="server"> 
      <asp:Panel ID="tblReport" runat="server"> 
      <div class="boxed1a"> 
        <img class="images4" src="Images/Penguins.jpg" width="640" height="45" /> 
        <table class="tb3"> 
        <tr> 
        <td>Leasehold & Functional Programs</td> 

        </tr> 
        <tr> 
        <td>N/A</td> 

        </tr> 
        <tr> 
        <td>Acquis Maint & Renov</td> 

        </tr> 
        </table> 

       </div> 
    </asp:Panel> 
      <asp:Button runat="server" ID="btnExport" Text="Export" OnClick="btnExport_Click" /> 
     </form> 
    </body> 



    protected void btnExport_Click(object sender, EventArgs e) 
      { 
       Response.Clear(); 
       Response.Buffer = true; 
       Response.Charset = ""; 

       Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 
       Response.AppendHeader("content-disposition", "attachment; filename=report.docx"); 

       StringWriter sw = new StringWriter(); 
       HtmlTextWriter htw = new HtmlTextWriter(sw); 
       tblReport.RenderControl(htw); 
       Response.Write(sw.ToString()); 
       Response.Flush(); 
       Response.End(); 
      } 

これはどのようにして.docx形式で実現できるのか教えてください。

答えて

0

HTMLテキストライターは、.netでWord文書を作成する正しい方法ではありません。

簡単な単語文書を作成し、https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.aspxというリンクから参照を取得するには、次のコードを使用します。

上記のリンクは、.netで効率的なワードドキュメントを作成するのに役立ちます。

Microsoft.Office.Interop.Word._Application objWord; 
object oMissing = System.Reflection.Missing.Value; 
object oEndOfDoc = "\\endofdoc"; 
FolderBrowserDialog ff = new FolderBrowserDialog(); 
ff.ShowDialog(); 
string filename = "Sample"; 
Microsoft.Office.Interop.Word._Document objDoc; 
objWord = new Microsoft.Office.Interop.Word.Application(); 
objWord.Visible = true; 
objDoc = objWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing); 
Microsoft.Office.Interop.Word.Range wrdRng = objDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; 
wrdRng.Text = "Simple Word"; 
this.Close(); 
string fp = ff.SelectedPath + "\\" + filename + ".docx"; 
objDoc.SaveAs2(fp); 

+0

Interopはサーバー上で使用するようには設計されていません。彼らは数多くの問題を引き起こすでしょう。しかし、正しい軌道に乗っています。 – krillgar

関連する問題