0

我第一次涉足 Excel 互操作,但在飞速发展之后却碰壁了。

我有一个 Excel 模板,其中一张是评估表,另一张包含如何进行评估的指导说明。

我还有一个 XML 文件,其中包含正在评估的项目的详细信息。

我需要将项目名称、申请编号和公司名称合并到第一张表中,然后使用文件名 [Application No] - [Project Title].xlsx 保存该表。

第一部分工作正常。我已经加载了 XML,代码正在将数据放入应有的形式中。

我的问题是储蓄部分。我找到了 .SaveAs 方法,它创建了几个文件......但它们不会打开。然后我得到一个 HRESULT 错误 0x800A03EC - 搜索网络对此没有任何解释。有些东西告诉我 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这里有什么对象,但如果您正确假设this是工作表,请尝试this.Parent.SaveAs

或者,如果this结果是一个范围,请尝试this.Worksheet.Parent.SaveAs

于 2011-04-12T11:40:54.647 回答