Использование Excel в качестве таблицы ADO кажется очень глючным

#sql #excel #delphi #export-to-excel #ado

#sql #excel #delphi #экспорт в Excel #ado

Вопрос:

Короткая версия: используя ADO, как я могу создать таблицу Excel с первым столбцом, содержащим nrs 0 ..100

Последние два дня я играл с Excel и пытался использовать его в качестве таблицы ADO. Я обнаружил, что это очень неинтуитивно и глючно, но мне бы очень хотелось, чтобы это работало.

  • Обновление данных во время редактирования пользователем ячейки кажется невозможным (любые возможные обходные пути?)
  • Удаление записей невозможно (любые возможные обходные пути?)
  • Вставка начинается с произвольной точки, которая, похоже, поддерживается Excel. Даже после удаления и повторного создания таблицы.
  • Если я создаю таблицу из SQL, заголовки создаются в строке 2 листа Excel (а не в 1, как я ожидал)

Я использую Delphi с ADO для подключения к Excel.

Теперь предположим, что я хочу заполнить первый столбец таблицы числами 0 ..100. Если я подключаюсь к Excel, я должен предположить, что в таблице есть мусор, поэтому я пытаюсь потерять записи, удалив таблицу и создав новую (на том же листе). Затем я добавляю новые записи, но они появляются где-то в строке nr 20 (именно столько строк, по мнению Excel, существует). Таким образом, первые строки только кажутся пустыми, но на самом деле это просто пустые записи. Теперь, как я могу создать таблицу, начиная со строки 1?

До сих пор я играл с этими запросами:

 UPDATE [Sheet1$] SET [R5_L3]=null, [Time]=null, [Offset0]=null, [Offset1]=null
SELECT * FROM [Sheet1$]
INSERT INTO [Sheet1$] ([R5_L3], [Time], [Offset0], [Offset1]) VALUES ('1', '1', '1', '1')
DROP TABLE [Sheet1$]
CREATE TABLE [Sheet1$] ([R5_L3] VARCHAR(40), [Time] VARCHAR(40), [Offset0] VARCHAR(40), [Offset1] VARCHAR(40))
 

(1) Очищает таблицу -> работает нормально, за исключением того, что у меня есть идея, как настроить таргетинг на определенную строку после этого.
(2) Работает нормально
(3) Вставляет записи, начинающиеся там, где Excel считает, что они должны начинаться (и в большинстве случаев это неправильно)
(4) Очищает лист Excel (таблицу), включая заголовки
(5) Создает новую таблицу с заголовком в строке 2 (вместо строки 1). Вставка все еще начинается с произвольной строки

Комментарии:

1. Почему вы хотите неправильно использовать Excel в качестве базы данных !? Как вы уже поняли, это создает больше проблем, чем решает ваши реальные проблемы. Поместите свои данные туда, где им место: в реальную базу данных, например, Access, SQLite, MySQL / MariaDB, FireBird, Interbase и т. Д. Затем экспортируйте свои данные оттуда в Excel через OLE , чтобы представить свои данные так, как вы этого хотите.

2. Или просто автоматизируйте Excel напрямую, без использования ADO. Я не вижу в вашем коде ничего, что требовало бы использования ADO вместо простой автоматизации Excel. Excel не является базой данных. Это электронная таблица. Относитесь к нему как к таковому. Если вам нужна база данных, используйте Access.

3. Конечно, я не хочу использовать Excel в качестве базы данных. Я хочу ввести некоторые измерения температуры в реальном времени в таблицу, выполнить некоторые вычисления и составить график этого. Автоматизация также имеет свои проблемы. Я опубликовал это, потому что мне нужно было знать, успешно ли кто-то делал что-то подобное в прошлом. На данный момент это кажется глючным в использовании…

4. Кто-то предложил мне добавить метку ADOX к моему вопросу, но я думаю, что ADOX имеет к этому какое-то отношение. Вопрос заключается в использовании листов в Excel в качестве таблицы базы данных, чтобы вы могли читать и записывать из Excel и в Excel, как если бы это была таблица базы данных. Я рассмотрел свой вопрос, но я не знаю, как сделать его более понятным, чем сейчас. Предложения по улучшению приветствуются, но будьте конкретны и прочитайте вопрос, прежде чем говорить мне, что все это неправильно.

5. Вы не можете использовать книгу Excel в качестве базы данных. Он не предназначен для этой цели, не поддерживает одновременное многопользовательское редактирование и просто является неправильным выбором. Если вам нужна база данных, используйте базу данных. Для небольших приложений таблица доступа с использованием ADO проста, и она будет поддерживать нескольких пользователей, сложные поисковые запросы и другие вещи подходящим образом. Если вы чувствуете, что вам нужно использовать Excel, пришло время узнать что-то новое и научиться использовать подходящий инструмент для работы.