5

一部のデータを含むレポートを作成しました。ユーザーがフォームのエクスポート ボタンをクリックして、データを Word ドキュメントにエクスポートする必要はありません。ファイルは問題なく保存されます。問題は、ドキュメントを単語で開くと、保存するはずのレポートではなく、ゴミの集まりです。

私の保存ボタンは次のようになります。

SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.InitialDirectory = @“C:\”;
saveFileDialog.RestoreDirectory = true;
savefileDialog.Title = “Browse Text Files”;
saveFileDialog.DefaultExt = “docx”;

saveFileDialog.Filter = “Word Doc (*.docx)|*.docx|PDF (*.pdf)| *.pdf”;
saveFileDialog.checkFileExists = false;
saveFileDialog.CheckPathExists = true;

Warning[] warnings;
string[] streams;
string mimeType;
string encoding;
string extension;

byte[] bytes = reportViewer1.LocalReport.Render(“Word”, null, out mimeType, out encoding, out extension, out streams, out warnings);

if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
var filename = saveFileDialog.FileName;
System.IO.FileStream file = new FileStream(filename, FileMode.Create);
file.Write(bytes, 0, bytes.length);
file.close();
}

助言がありますか?

4

3 に答える 3

3

Word の LocalReport.Render は、古い Word 形式 (バージョン 6 だと思います) にのみエクスポートします。XML (docx 拡張子) に基づく新しいオープン形式はサポートされていません。したがって、docx 拡張子を持つことにより、Word は古い形式ではなく新しい形式を期待しているため、すべてがゴミとして解釈されます。余談ですが、Word 文書の docx 拡張子を .zip に変更し、コンテンツを抽出して、結果のフォルダーを調べます。今見えているものは非常に興味深いです。

于 2013-02-18T01:00:47.237 に答える
1

したがって、このことについて多くの作業を行った後、この行を変更することがわかりました:

saveFileDialog.Filter = “Word Doc (*.docx)|*.docx|PDF (*.pdf)| *.pdf”; 

saveFileDialog.Filter = “Word Doc (*.doc)|*.doc|PDF (*.pdf)| *.pdf”; 

私の問題を修正します。何らかの理由で .docx ファイルに保存すると、データが破損します。

于 2012-08-29T21:00:45.790 に答える