Пример использования MS Excel из скрипта Application Server

Импортируйте библиотеку из excel.exe и используйте импортированные типы, работающий пример ниже, я его тестировал для ASP2012 + MSOffice 2007 (Win2008 64bit) и в системе ASP2014 p01 + MSOffice 2010 (Win2008 R2 64bit)   :

'Определяем переменные
'LogMessage("Start script");
dim app as Microsoft.Office.Interop.Excel._Application;
dim wb as Microsoft.Office.Interop.Excel._Workbook;
dim ws as Microsoft.Office.Interop.Excel._WorkSheet;
dim a1 as Microsoft.Office.Interop.Excel.Range;
dim a2 as Microsoft.Office.Interop.Excel.Range;
dim a3 as Microsoft.Office.Interop.Excel.Range;
'Выделяем память под объекты и инициализируем их
app = new Microsoft.Office.Interop.Excel.Application;
wb = app.Workbooks.Add();
ws = wb.ActiveSheet;
' Инициализируем объекты ячеек
a1 = ws.Range("A1");
a2 = ws.Range("A2");
a3 = ws.Range("A3");
' Заносим какие-то значения в ячейки
a1.Value2 = 1000;
a2.Value2 = 2000;

a3.Value2 = "=A1*A2";
'LogMessage(a3.Value2);
' Удаляем старые файлы с тем же именем
System.IO.File.Delete("C:\temp\temp.xlsx");
'LogMessage("del file");
' Создаем файл Excel
wb.SaveAs("C:\temp\temp.xlsx");
'LogMessage("save file");
' Закрываем приложение, очищаем память
wb.Close(false);
'LogMessage("close file");
'LogMessage("end main part");

System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
'LogMessage("end");

В коде скрипта:

C:\temp\temp.xlsx — путь для сохранения файла Excel, старые сохраненные файлы удаляются строкой: System.IO.File.Delete(«C:\temp\temp.xlsx»);

Для отладки строки типа: ‘LogMessage раскомментировать и смотреть сообщения в SMC

Строки типа:

System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
System.GC.Collect();
System.GC.WaitForPendingFinalizers();

Для корректного закрытия excel и очистки памяти, см. MSDN

Добавить комментарий