0

私は Excel Interop への最初の進出であり、フライングスタートの後、壁にぶつかりました。

評価フォームである 1 つのシートと、評価の実行方法に関するガイダンス ノートを含む別のシートを含む Excel テンプレートがあります。

評価対象のプロジェクトの詳細が記載された XML ファイルもあります。

プロジェクトのタイトル、アプリケーション番号、および会社名を最初のシートにマージし、[アプリケーション番号] - [プロジェクトのタイトル].xlsx というファイル名でシートを保存する必要があります。

最初の部分は正常に動作しています。私は XML をロードしましたが、コードはデータを本来あるべきフォームに入れています。

私の問題は保存部分です。.SaveAs メソッドを見つけたところ、いくつかのファイルが作成されましたが、それらは開きません。次に、HRESULT エラー 0x800A03EC が表示されます - Web を検索しても、これについては何も説明されていません。this.SaveAs() がワークブックではなくワークシートを参照していると何かが言っていますが、私はそこを推測しています。

私は愚かなことをしたことを願っています。それは簡単な修正です。

参考までに、ここに私のコードを示しますが、私が言うように、それがどれほど役立つかはわかりません。

    private void MergeData()
    {
        doc.Load(@"C:\XML Data\source.xml");

        XmlNodeList forms = doc.SelectNodes("//form1");

        for (int i = 0; i < forms.Count; i++)
        {
            XmlNodeList nodes = forms[i].ChildNodes;

            string refNo = nodes[0].InnerText.ToString();
            string companyName = nodes[3].InnerText.ToString();
            string title = nodes[1].InnerText.ToString();

            this.Cells[9, 4] = title;
            this.Cells[11, 4] = refNo;
            this.Cells[14, 4] = companyName;


            this.SaveAs(@"C:\Assessment Forms\" + refNo + " - " + title + ".xlsx");
        }
    }

これらのファイルを保存する方法を知っている人はいますか?

読んでくれてありがとう

編集 -

この記事を見つけました

C# と Excel の相互運用の問題、Excel ファイルの保存がスムーズでない

その提案を含むようにコードを変更しました

Excel.Application app = this.Application;
Excel.Workbook wb = app.Workbooks.Add(missing);
wb.SaveAs(@"C:\Assessment Forms\" + refNo + " - " + title + ".xlsx");

しかし、それは同じことをしています。

期限が迫っているので、手動でコピー、貼り付け、保存を開始する必要があると思います:(

4

1 に答える 1

1

ここにあるオブジェクトはわかりませんが、ワークシートであるとthis仮定するのが正しい場合は、試してくださいthisthis.Parent.SaveAs

thisまたは、範囲であることが判明した場合は、試してくださいthis.Worksheet.Parent.SaveAs

于 2011-04-12T11:40:54.647 に答える