Я создаю приложение Windows Form, используя Visual Basic (Visual Studio 2008).
Идея состоит в том, чтобы запросить базу данных MySQL и экспортировать результаты в документ Excel.
Мне удалось сделать это с помощью этого кода (я просто покажу экспорт в часть Excel):
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.IO
Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.Configuration
Imports System.Runtime.InteropServices
Private Sub btn_getReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_getReport.Click
Dim wb As Excel.Workbook
Dim ex As New Excel.Application
wb = ex.Workbooks.Add(System.Reflection.Missing.Value)
Dim sheet As Excel.Worksheet = CType(wb.Worksheets.Add, Excel.Worksheet)
sheet.Name = "algo"
Dim i As Integer = 1
Try
While reader.Read
sheet.Cells(i, 1) = CStr(reader.Item(0))
sheet.Cells(i, 2) = CStr(reader.Item(1))
sheet.Cells(i, 3) = CStr(reader.Item(2))
i += 1
End While
Catch MyEx As MySqlException
RaiseEvent MySqlError(Err, MyEx, "read")
Catch exc As Exception
RaiseEvent MySqlError(Err, exc, "read")
End Try
Dim dialog As New SaveFileDialog
Dim result As DialogResult = dialog.ShowDialog
Try
wb.SaveAs(dialog.FileName)
Catch exerr As Exception
End Try
'Show the spreadsheet.
'ex.Visible = True
'wb.Activate()
End Sub
И он отлично работает на моем ноутбуке (на котором установлен офис 2003), но когда я создаю установочный пакет и устанавливаю его на сервере, где я собираюсь его использовать (на котором не установлен офис), я получаю это ошибка:
"Получение фабрики класса COM для
компонент с CLSID
{00024500-0000-0000-C000-000000000046}
не удалось из-за следующей ошибки:
80040154 ".
Для того, что я прочитал, это проблема при попытке использовать Excel, когда его нет на компьютере, я могу понять, что меня действительно смущает то, что я использовал приложения, которые экспортируют информацию в Excel, даже если они работают на компьютерах без установки офиса на них, как они могут это сделать?
И для записи мне нужен файл excel, а не CSV.
Большое спасибо.