Использование Interop с C #, Excel Сохранить изменение оригинала. Как это отрицать? - PullRequest
11 голосов
/ 27 августа 2008

Проблема: загрузка шаблона таблицы Excel. Используя команду Сохранить с другим именем файла и затем выходите из объекта взаимодействия. Это заканчивает тем, что сохранило оригинальный файл шаблона. Не тот результат, который нравится.

public void saveAndExit(string filename)
{        
    excelApplication.Save(filename);
    excelApplication.Quit();
}

Исходный открытый файл - c: \ testing \ template.xls В качестве имени файла передается c: \ testing \ 7777 (дата) .xls

У кого-нибудь есть ответ?

(Ответ, который я выбрал, был самым правильным и тщательным, хотя wbk.Close () требует передаваемых ему параметров.

Ответы [ 4 ]

8 голосов
/ 27 августа 2008

Взаимодействие с Excel довольно болезненно. Я откопал свой старый проект, немного поиграл, и думаю, это то, что ты ищешь. Другие комментаторы правы, но, по моему опыту, вызов SaveAs () намного больше, чем можно было бы ожидать, если бы вы использовали те же объекты (без оболочки взаимодействия) в VBA.

Microsoft.Office.Interop.Excel.Workbook wbk = excelApplication.Workbooks[0];  //or some other way of obtaining this workbook reference, as Jason Z mentioned
wbk.SaveAs(filename, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing);
wbk.Close();
excelApplication.Quit();

Должен любить все эти Type.Missings. Но я думаю, что они необходимы.

1 голос
/ 27 августа 2008

Вместо использования ExcelApplication вы можете использовать объект Workbook и вызывать метод SaveAs (). Вы можете передать обновленное имя файла туда.

0 голосов
/ 27 августа 2008
  1. То же самое в SaveAs
  2. Всякий раз, когда мне нужно сделать Interop, я создаю отдельную библиотеку классов VB.NET и пишу логику в VB. Это просто не стоит хлопот делать это в C #
0 голосов
/ 27 августа 2008

Вы пробовали SaveAs из рабочего листа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...