Использование взаимодействия с C#, Excel. Сохраните изменение оригинала.Как это отрицать?

StackOverflow https://stackoverflow.com/questions/29141

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Оригинальный файл открыт C: testing template.xls Имя файла, которое передается IS C: testing 7777 (date) .xls

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

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

Это было полезно?

Решение

Взаимодействие с 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();

Мне нравятся все эти Тайпы. Пропавшие без вести.Но я думаю, что они необходимы.

Другие советы

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

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

  1. То же самое в SaveAs
  2. Всякий раз, когда мне нужно выполнить Interop, я создаю отдельную библиотеку классов VB.NET и пишу логику на VB.Просто не стоит заморачиваться с этим на C#.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top