Jest na to wiele dobrych sposobów, które inni już sugerowali. Poniżej znajduje się kilka wskazówek dotyczących „pobierania danych programu Excel za pomocą ścieżki SQL”.
Excel ma „Kreatora połączenia danych”, który umożliwia importowanie lub łączenie z innego źródła danych lub nawet w tym samym pliku Excel.
W ramach Microsoft Office (i OS) są dwaj interesujący dostawcy: stary „Microsoft.Jet.OLEDB” i najnowszy „Microsoft.ACE.OLEDB”. Szukaj ich podczas konfigurowania połączenia (na przykład w Kreatorze połączenia danych).
Po połączeniu ze skoroszytem programu Excel arkusz lub zakres jest odpowiednikiem tabeli lub widoku. Nazwa tabeli arkusza to nazwa arkusza z dołączonym znakiem dolara („$”) i otoczona nawiasami kwadratowymi („[” i „]”); zakresu, jest to po prostu nazwa zakresu. Aby określić nienazwany zakres komórek jako źródło rekordów, dołącz standardową notację wiersza / kolumny programu Excel na końcu nazwy arkusza w nawiasach kwadratowych.
Natywny SQL będzie (mniej więcej) SQL Microsoft Access. (W przeszłości nosił nazwę JET SQL; jednak Access SQL ewoluował i uważam, że JET jest przestarzałą starą technologią).
Przykład, czytanie arkusza roboczego: SELECT * FROM [Sheet1$]
Przykład, odczyt zakresu: SELECT * FROM MyRange
Przykład odczytywania nienazwanego zakresu komórek: SELECT * FROM [Sheet1$A1:B10]
Dostępnych jest wiele, wiele książek i witryn internetowych, które pomogą Ci przeanalizować szczegóły.
=== Dalsze uwagi ===
Domyślnie zakłada się, że pierwszy wiersz źródła danych programu Excel zawiera nagłówki kolumn, których można używać jako nazw pól. Jeśli tak nie jest, musisz wyłączyć to ustawienie, w przeciwnym razie pierwszy wiersz danych „znika” i zostanie użyty jako nazwy pól. Odbywa się to przez dodanie opcjonalnego HDR= setting
do właściwości rozszerzonych parametrów połączenia. Wartość domyślna, której nie trzeba określać, to HDR=Yes
. Jeśli nie masz nagłówków kolumn, musisz określić HDR=No
; dostawca nazywa twoje pola F1, F2 itp.
Przestroga dotycząca określania arkuszy: Dostawca zakłada, że tabela danych zaczyna się od najwyższej, skrajnej lewej, niepustej komórki w określonym arkuszu. Innymi słowy, Twoja tabela danych może rozpocząć się w wierszu 3 w kolumnie C bez problemu. Nie możesz jednak na przykład wpisać tytułu arkusza roboczego powyżej i po lewej stronie danych w komórce A1.
Ostrzeżenie dotyczące określania zakresów: Gdy określisz arkusz jako źródło rekordów, dostawca dodaje nowe rekordy poniżej istniejących rekordów w arkuszu, o ile pozwala na to miejsce. Po określeniu zakresu (nazwanego lub nienazwanego) Jet dodaje również nowe rekordy poniżej istniejących rekordów w zakresie, na ile pozwala na to miejsce. Jednak w przypadku ponownego wyszukiwania w oryginalnym zakresie wynikowy zestaw rekordów nie zawiera nowo dodanych rekordów spoza zakresu.
Typy danych (warto spróbować) dla C REATE TABLE: Short, Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal
.
Podłączanie do „starych Tech” Excel (pliki z rozszerzeniem xls) na: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;
. W przypadku skoroszytów programu Microsoft Excel 5.0 i 7.0 (95) należy używać źródłowego typu bazy danych programu Excel 5.0, a dla skoroszytów programu Microsoft Excel 8.0 (97), 9.0 (2000) i 10.0 (2002) należy używać źródłowego typu bazy danych programu Excel 8.0.
Łączenie się z „najnowszym” Excelem (pliki z rozszerzeniem xlsx): Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
Traktowanie danych jako tekstu: ustawienie IMEX traktuje wszystkie dane jako tekst. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
(Więcej szczegółów na http://www.connectionstrings.com/excel )
Więcej informacji można znaleźć pod adresem http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx i pod adresem http://support.microsoft.com/kb/316934
Łączenie się z programem Excel przez ADODB przez VBA, szczegółowo opisane na http://support.microsoft.com/kb/257819
Szczegóły dotyczące Microsoft JET 4 są dostępne pod adresem http://support.microsoft.com/kb/275561