it-swarm.com.ru

Как сохранить/перезаписать существующий файл Excel с Excel Interop - C #

Есть ли способ сохранить изменения в электронной таблице Excel с помощью взаимодействия Excel (в этом случае я добавляю к нему рабочую таблицу), не предлагая ему Запрос пользователя, если они хотят перезаписать существующий файл с изменениями. Я не хочу, чтобы пользователь даже видел электронную таблицу открытой в моем приложении, поэтому всплывающее окно с сообщением о том, хотят ли они перезаписать файл, кажется очень неуместным и, возможно, вводит пользователя в заблуждение. 

Я использую метод workbook.SaveAs (fileloaction). 

Здесь я инициализирую ссылочные объекты COM для взаимодействия Excel.

private Excel.Application app = null;
    private Excel.Workbook workbook = null;

    public Excel.Workbook Workbook
    {
        get { return workbook; }
        set { workbook = value; }
    }
    private Excel.Worksheet worksheet = null;
    private Excel.Range workSheet_range = null;

Ниже приведен код, который я использую для закрытия/сохранения файла Excel. Строка метода workbook.close (), как сообщается, выдает необработанное исключение. 

 workbook.Close(true, startForm.excelFileLocation, Missing.Value);
            Marshal.ReleaseComObject(app);
            app = null;
            System.GC.Collect();
20
user1546315

По сути, все, что вам нужно, это ExcelApp.DisplayAlerts = False - Вот как я это делаю, хотя:

ExcelApp.DisplayAlerts = False
ExcelWorkbook.Close(SaveChanges:=True, Filename:=CurDir & FileToSave)

Надеюсь это поможет

53
John Bustos

Только этот код будет требоваться для предупреждения о переопределении остановки или шаблон уже используется

ExcelApp.DisplayAlerts = False

8
Shivam Srivastava

Я знаю, что это старый пост, но я хотел бы поделиться способом сделать эту работу, не вызывая возможных разочарований в будущем. 

Первое, что мне не нравится в использовании: ExcelApp.DisplayAlerts = False

Установка этого флага установит это свойство в файле Excel, а не только в вашей программе. Это означает, что если пользователь вносит изменения в файл и закрывает его (нажав X), ему не будет предложено сохранить файл, что приведет к разочарованию позже. Это также отключит любые другие запросы, которые Excel обычно отправляет.

Мне нравится проверять, существует ли файл перед его сохранением:

        if (File.Exists(SaveAsName))
        {
            File.Delete(SaveAsName); 
        }
0
user5581710