/ / Oledb lub ODBC Utwórz skoroszyt lub arkusz roboczy bez zainstalowanego pakietu Office - vb.net, excel, odbc, oledb, oledbconnection

Oledb lub ODBC Utwórz skoroszyt lub arkusz roboczy bez zainstalowanego pakietu Office - vb.net, excel, odbc, oledb, oledbconnection

Mam serwer 2008R2 z SQL i IIS; brak zainstalowanego pakietu MS Office, jednak muszę wysyłać dynamicznie utworzone odpowiedzi Excel na podstawie żądań użytkownika.

Zainstalowany jest pakiet redystrybucyjny "Microsoft Access Database Engine 2010", zgodnie ze specyfikacją, sterownik Excela (między innymi) powinien być na miejscu.

Próbujesz utworzyć nową bazę danych z następującym ciągiem połączenia:

    Using ExcelConnection As New System.Data.OleDb.OleDbConnection(
"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + Name + ";" +
"Mode=ReadWrite;" +
"ReadOnly=false;" +
"Extended Properties=Excel 12.0;")
ExcelConnection.Open()
....
end Using

Błąd

  [OleDbException (0x80004005): Could not find installable ISAM.]
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +318
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +88
System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +24
....

Usuwanie Mode=ReadWrite;ReadOnly=false; Błąd z innym błędem:

OleDbException (0x80004005): Cannot update.  Database or object is read-only.]
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +318
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions .....

Zabezpieczenia katalogu wyjściowego umożliwiają tworzenie bez ograniczeń.

Jeśli mam "szablon", mogę go skopiować i pracować z nim. A więc: tworzenie jest niedozwolone, ale odczyt / zapis jest.

Nie zaleca się używania CSV, oprogramowania stron trzecich ani niczego innego poza dobrze opracowanym skoroszytem programu Excel z co najmniej jednym Arkuszem.

Przepraszam za język: biegle w języku C #, ale wolę pisać w języku VB ...

Odpowiedzi:

0 dla odpowiedzi № 1

Jeśli chcesz utworzyć pusty nowy plik Excel, musisz określić "Excel 12.0 XML" we właściwościach rozszerzonych, np.

Using ExcelConnection As New System.Data.OleDb.OleDbConnection(
"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + Name + ";" +
"Extended Properties=Excel 12.0 XML;")
ExcelConnection.Open()
End Using

Pamiętaj też, że plik Excela nie będzie kompletny, dopóki nie dodasz co najmniej jednego arkusza ...

Using ExcelCommand As New System.Data.OleDb.OleDbCommand("Create Table [Sheet1] (Column1 Int)", ExcelConnection)
ExcelCommand.ExecuteNonQuery()
End Using

Jednak przeczytanie istniejącego, prawdopodobnie po skopiowaniu szablonu z innego miejsca, będzie wymagało użycia innych rozszerzonych właściwości ...

Using ExcelConnection As New System.Data.OleDb.OleDbConnection(
"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + Name + ";" +
"Extended Properties=""Excel 12.0;HDR=No;IMEX=1"""
ExcelConnection.Open()
End Using

Możesz mieć nagłówki, w których przypadku podaj HDR = Tak. Osobiście wolę tego nie robić.