2009-09-09 2 views
2

Я создаю приложение формы окон, используя визуальный базовый (visual studio 2008).Как экспортировать в excel из winform vb.net 2008 без офиса?

Идея состоит в том, чтобы запросить базу данных MySQL и экспортировать результаты в документ 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 установлен), но когда я создаю пакет установки и установить его на сервере, где я собираюсь использовать его (который не установлен офис), я получаю эту ошибку:

"Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154."

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

И для записи мне нужен файл excel, а не CSV.

Большое спасибо.

+0

Смотрите этот вопрос для некоторых идей: how-can-i-programatically-create-read-write-an-excel-without-having-office-inst Crispy

ответ

0

Вы абсолютно точно определили проблему. Это хорошие новости. Плохая новость заключается в том, что вы не можете использовать Excel Interop без DLL-библиотек Excel, установленных на компьютере.

Ваши варианты:

  1. Установите Excel на компьютере, где это собирается бежать.
  2. Вытяните библиотеки DLL (библиотеки) и разверните их с помощью приложения . В случае вы, вероятно, нарушаете лицензионные соглашения с Microsoft. Сделайте это на свой страх и риск.
  3. Создание электронных таблиц Excel вручную в формате Open XML, используемый Бюро 2007.

Чтобы сделать третий вариант, посмотрите на формат Excel 2007 в этой статье: http://msdn.microsoft.com/en-us/library/aa338205.aspx

В двух словах , вы будете читать свои данные в наборе данных. Затем вы экспортируете его в файл XML. Запишите этот файл вместе с любой вспомогательной информацией в zip-файл и измените расширение на .xlsx. Это немного сложнее, чем это, но не так много.

+0

Спасибо за вашу помощь. О трех вариантах: 1- Я не могу установить Excel на сервер из-за проблем с лицензированием, 2-то же, что и выше, 3- Я должен использовать Excel 2003, также первое решение кажется более простым, по крайней мере, для того, что мне нужно выполнить Теперь. Большое спасибо за ваш подробный и очень четкий ответ. – user33177

+0

Прохладный! Рад, что тебе нужна помощь. :-) – Rap

0

Если вы действительно хотите avaid легкого пути экспорта запятой или tabdelimited файл, который может обрабатывать отличиться отлично ...

... затем экспортировать в формат Excel-XML (SpreadsheetML) путем создания XML/с помощью xsl. Вы можете найти example here. Должен работать из Excel 2002+.

+0

Благодарим вас за помощь, однако я нашел, что решение выше было проще реализовать. Большое спасибо! – user33177

0

может экспортировать файлы Excel, работает с любым .NET-решением, включая WinForms, и не требует установки Excel.

Вы можете увидеть живые образцы here и скачать бесплатную пробную версию here.

Отказ от ответственности: У меня есть SpreadsheetGear ООО

Смежные вопросы