Є багато чудових способів зробити це, про що вже пропонували інші. Продовжуючи "отримувати дані Excel за допомогою доріжки SQL", ось кілька підказок.
Excel має "Майстер підключення даних", який дозволяє імпортувати або посилати з іншого джерела даних або навіть у тому самому файлі Excel.
У складі Microsoft Office (та ОС) є два провайдери, що представляють інтерес: старий "Microsoft.Jet.OLEDB" та останній "Microsoft.ACE.OLEDB". Шукайте їх під час встановлення з’єднання (наприклад, за допомогою майстра підключення даних).
Після підключення до книги Excel робочий аркуш або діапазон є еквівалентом таблиці або подання. Назва таблиці робочого аркуша - це назва робочого аркуша із доданим до нього знаком долара ("$") та оточеним квадратними дужками ("[" та "]"); діапазону, це просто назва діапазону. Щоб вказати безіменний діапазон комірок як джерело записів, додайте стандартну нотацію рядків / стовпців Excel до кінця імені аркуша в квадратних дужках.
Власний SQL буде (більш-менш таким) SQL Microsoft Access. (Раніше він називався JET SQL; однак Access SQL еволюціонував, і я вважаю, що JET застаріла стара техніка.)
Приклад, читання робочого аркуша: SELECT * FROM [Sheet1$]
Приклад, читання діапазону: SELECT * FROM MyRange
Приклад, читання безіменного діапазону комірок: SELECT * FROM [Sheet1$A1:B10]
Існує багато багатьох книг та веб-сайтів, які допоможуть вам пропрацювати деталі.
=== Подальші примітки ===
За замовчуванням передбачається, що перший рядок джерела даних Excel містить заголовки стовпців, які можна використовувати як імена полів. Якщо це не так, вам слід вимкнути це налаштування, або ваш перший рядок даних "зникне", щоб використовуватись як імена полів. Це робиться шляхом додавання необов’язкового HDR= setting
до розширених властивостей рядка підключення. За замовчуванням, яке не потрібно вказувати, є HDR=Yes
. Якщо у вас немає заголовків стовпців, потрібно вказати HDR=No
; постачальник називає ваші поля F1, F2 тощо.
Застереження щодо визначення робочих аркушів. Постачальник припускає, що ваша таблиця даних починається з самої верхньої, самої лівої, не порожньої комірки на вказаному аркуші. Іншими словами, ваша таблиця даних може починатися з рядка 3, стовпець C без проблем. Однак ви не можете, наприклад, ввести заголовок робочого аркуша зверху та ліворуч від даних у комірці А1.
Застереження щодо вказівки діапазонів. Коли ви вказуєте робочий аркуш як джерело записів, постачальник додає нові записи нижче існуючих записів на аркуші, як дозволяє місце. Коли ви вказуєте діапазон (з іменем чи без імені), Jet також додає нові записи нижче існуючих записів у діапазоні, як дозволяє простір. Однак якщо ви вимагаєте вихідний діапазон, отриманий набір записів не включає нещодавно додані записи поза діапазоном.
Типи даних (варто спробувати) для C REATE TABLE: Short, Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal
.
Підключення до «старої» технологій Excel (файли з розширенням XLS): Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;
. Використовуйте тип вихідної бази даних Excel 5.0 для книг Microsoft Excel 5.0 та 7.0 (95), а тип вихідної бази даних Excel 8.0 - для книг Microsoft Excel 8.0 (97), 9.0 (2000) та 10.0 (2002).
Підключення до "останнього" Excel (файли з розширенням файлу xlsx): Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
Обробка даних як тексту: Налаштування IMEX обробляє всі дані як текст. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
(Детальніше на http://www.connectionstrings.com/excel )
Більше інформації на веб- сайті http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx та на веб-сайті http://support.microsoft.com/kb/316934
Підключення до Excel через ADODB через VBA, деталізовано на веб-сторінці http://support.microsoft.com/kb/257819
Подробиці про Microsoft JET 4 за адресою http://support.microsoft.com/kb/275561