2017-10-02 12 views
1

DocXライブラリを使用している場合、私はdocxドキュメントをサーバ上に生成してからダウンロードしています。.Net C#DocX librairy:DocXドキュメントをシリアライズする方法は?

そのためには、私の文書をバイト配列で変換する必要があります。私はpreviousloyこのような物理的なファイルとして文書を保存して、それを行うために

// Save all changes to this document. 
document.SaveAs(GENERATED_DOCX_LOCATION); 

return System.IO.File.ReadAllBytes(GENERATED_DOCX_LOCATION); 

私はむしろそれをしないだろう。物理的に保存せずにこのオブジェクトをダウンロードしてシリアル化することは可能ですか?

私はすでに試したこと:で

private byte[] ObjectToByteArray(object obj) 
{ 
    if (obj == null) 
     return null; 
    BinaryFormatter bf = new BinaryFormatter(); 
    using (MemoryStream ms = new MemoryStream()) 
    { 
     bf.Serialize(ms, obj); 
     return ms.ToArray(); 
    } 
} 

を:

return this.ObjectToByteArray(document); 

しかし、明らかに、DOCXは、ISerializableを実装していません。

EDIT:以下のコードはどちらか動作しません

byte[] byteArray = null; 
using (var stream = new MemoryStream()) 
{ 
    document.SaveAs(stream); 
    byteArray = stream.ToArray(); 
} 
return byteArray; 
+0

これはウェブサーバーであり、組織の内部ですか? –

+0

はいそれは専用のチームで管理されているプラ​​イベートサーバです –

+1

これを見てください。これは必要なものを提供するはずです(MVCを使用していない限り、これは別の回答になりますが、これはうまくいくはずですhttps://stackoverflow.com/questions/18477398/asp-net-file-download-from-server –

答えて

0

オリジナルのDocXライブラリを使用する方法はありませんでした。

このライブラリがMemoryStreamを使用してデータを管理するのは残念です。で

public MemoryStream DocumentMemoryStream { get { return this.memoryStream; } } 

コード:

コードは、DOCXプロジェクトに追加:私は単に、私はこの単純なコードを使用し、民間のMemoryStream変数を公開する新しいパブリック読み取り専用プロパティを追加私の問題を解決するために

私の主な機能:

return document.DocumentMemoryStream.ToArray(); 
1

は私のCを交換、これを試してください:あなたのドキュメントの場所とこのと\ tempに...パスは、あなたのためのファイルを取得し、書き込みますバイト配列から

void Main() 
{ 
    byte[] bytes = System.IO.File.ReadAllBytes(@"C:\temp\test.csv"); 

    using (var bw = new BinaryWriter(File.Open(@"C:\temp\test2.csv", FileMode.OpenOrCreate))) 
    { 
     bw.Write(bytes); 
     bw.Flush(); 
    } 

} 
+0

ありがとう、ありがとうございますが、ディスクにtest2.csvファイルを保存したくありません。私はDocXのlibrairyを変更することでこの問題を解決する方法を見つけました。詳細は私の記事を参照してください。ありがとうございます –

+0

これは、あなたがする必要があることを行う方法の例に過ぎませんでした.CSSファイルを保存する必要はありません。 –

+0

物理ファイルからバイト[]で始まるため、メモリ上ではなくディスク上でDocXを起動させてください。 –

関連する問題