Помогите плиз. с кодом C# Открыть файл Excel->Обновить->Сохранить

negof
Дата: 31.05.2014 16:15:34
Добрый день,

Помогите, пожалуйста!

Нужен готовый код на C# или Visual Basic для решения следующей задачи:

Есть файл Excel 2010, например: C:\file1.xlsx

1. Нужно его открыть.
2. Обновить «Лист1», на котором есть таблица с подключением к внешнему источнику - SQL Серверу.
3. Сохранить файл после обновления.

Код будет выполниться в проекте Visual Studio 2010

Заранее спасибо!
negof
Дата: 01.06.2014 16:56:19
Не уверен, что это оптимальный вариант, но сделал так и это работает:

//Дополнительно подключить к проекту
using Excel = Microsoft.Office.Interop.Excel;

//Дополнительно объявить
private Excel.Workbook fileExcel;

public void Main()
	{

            //обновление файлов Excel

            Excel.Application excel = new Excel.Application(); //создаем COM-объект Excel

            excel.Visible = false; //true - показывать / false - не показывать приложения Excel.

            //excel.SheetsInNewWorkbook = 3; //Количество листов

            //excel.Workbooks.Add(Type.Missing); //Открыть новую книгу Excel

            fileExcel = excel.Workbooks.Open("C:/file1.xlsx"); //Открыть существующую книгу Excel

            fileExcel.RefreshAll(); //Обновить книгу Excel.

            fileExcel.Save(); //Сохранить книгу Excel.

            fileExcel.Close(); //Закрытие книгу Excel.

            excel.Quit(); //Закрытие приложения Excel.

            //Обнуляем созданые объекты
            fileExcel = null;
            excel = null;

            //Вызываем сборщик мусора для их уничтожения и освобождения памяти
            GC.Collect();

	}
Павел Зигмундович
Дата: 11.06.2014 10:36:36
negof,

Поосторожнее с GC.Collect()
http://blogs.msdn.com/b/ricom/archive/2003/12/02/40780.aspx
Изопропил
Дата: 11.06.2014 10:49:38
Павел Зигмундович
negof,

Поосторожнее с GC.Collect()
http://blogs.msdn.com/b/ricom/archive/2003/12/02/40780.aspx


по ссылке трэш.

по существу - нужно вызывать Masrhal.ReleaseComOblect для всех COM объектов