Шаблон Excel: объединение данных и сохранение рабочих книг - PullRequest
0 голосов
/ 12 апреля 2011

Я нахожусь на моем первом наборе в Excel Interop, и после того, как я начал летать, ударил стену.

У меня есть шаблон Excel, который содержит один лист, который является оценочной формой, и другой, который содержит указания подля проведения оценки.

У меня также есть файл XML с подробной информацией об оцениваемых проектах.

Мне нужно объединить название проекта, номер заявки и название компании в первый листи затем сохраните лист с именем файла [№ приложения] - [Название проекта] .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");

Но он делает то же самое.

У меня крайний срок, поэтому думаю, что мне придется начинать копирование, вставку и сохранение вручную(

1 Ответ

1 голос
/ 12 апреля 2011

Не уверен, что объект this находится здесь, но если вы правы, считая this рабочим листом, попробуйте this.Parent.SaveAs

В качестве альтернативы, если this окажется диапазоном, попробуйте this.Worksheet.Parent.SaveAs

...