1

差し込みフィールドを使用してユーザー向けにカスタマイズすることにより、テンプレートからWord文書を生成しています。例: 名前:「ユーザーの名前」。今、私はドキュメントをサーバーに保存します

object miss = System.Reflection.Missing.Value;
            object oDocName = "C:\\Users\\admin\\Desktop\\test002.doc";
            wordDoc.SaveAs(ref oDocName, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
            ((_Application)wordApp).Quit(ref miss, ref miss, ref miss);

次に、ドキュメントをダウンロードできるようにします。

protected void download_Click(object sender, EventArgs e)
{ 
    FileStream fileStream = new FileStream("C:\\Users\\ebimbari\\Desktop\\test002.doc", FileMode.Open);

    int fileSize = (int)fileStream.Length;
    byte[] Buffer = new byte[fileSize];

    fileStream.Read(Buffer, 0, fileSize);
    fileStream.Close();

    Response.ContentType = ContType("C:\\Users\\admin\\Desktop\\test002.doc");
    Response.BinaryWrite(Buffer);
    Response.AddHeader("content-disposition", "attachment;filename=\"" + "form" + ".doc");
    Response.End();
}

問題は、フォームをサーバーに保存したくないことです。ダウンロード可能にするドキュメントを直接開くことはできますか? Microsoft.Office.Interop.Wordを使用しています

ありがとう。

4

1 に答える 1

2

魔法使いIsolatedStorageFile

編集:「実際にハードディスクに保存せずに、ファイルの永続的なコピーを作成する方法」に対する答えは、魔法のIsolatedStorageFile.

(「魔法」という言葉は省略される場合があります)。

このコードをテストできず、どのようworddoc.SaveAs(...)に動作するかわかりません。テストして私に知らせてください:

    private static readonly string CACHE =  @"MyWordCache";

    static void PutFile(object wordDoc, string fname)
    {
        using (var store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!store.DirectoryExists(CACHE))
                store.CreateDirectory(CACHE);

            object fullname = Path.Combine(CACHE, fname);
            wordDoc.SaveAs(ref fullname, ...);
        }
    }

    protected bool Downloadfile(string fname)
    { 
        using (var store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!store.DirectoryExists(CACHE))
                return false;

            var fullname = Path.Combine(CACHE, fname);
            using (var fileStream = store.OpenFile(fullname, FileMode.Open))
            {
                int fileSize = (int)fileStream.Length;
                byte[] Buffer = new byte[fileSize];

                fileStream.Read(Buffer, 0, fileSize);

                Response.ContentType = ContType(fullname);
                Response.BinaryWrite(Buffer);
                Response.AddHeader("content-disposition", "attachment;filename=\"" + "form" + ".doc");
                Response.End();
            }
        }
        return true;
    }
于 2012-11-10T10:23:35.097 に答える