Интеграция 1С и C#. Обращение к 1С через COM. Создание номенклатуры и выполнение запроса к 1С из C# на примере интеграции с Союз-PLM (система информационной поддержки жизненного цикла изделий). Обработка «Загрузка заказа на сборку». (ERP) Промо
Союз-PLM представляет собой полнофункциональный программный комплекс для решения широкого спектра задач управления инженерной технической информацией наукоемких изделий и сложных инженерных объектов в области машиностроения, приборостроения, архитектуры, строительства.
На практике, это управление конструкторской документацией, интегрированное с САПР, бизнес-процессы, файловый архив. Все это работает в SQL и шевелится с помощью скриптов на C#. Скрипты свободно отлаживаются в MS Visual Studio. Подробнее смотрите на их сайте: http://www.programsoyuz.ru/products/system-soyuz-plm.html Редактирование, конструирование и использование бизнес-процессов на порядок лучше систем на базе 1С из тех, что я изучил.
1 стартмани
OPENROWSET и связанные серверы
Важно!
В базе данных SQL Azure невозможно импортировать данные непосредственно из Excel. Сначала необходимо экспортировать данные в текстовый файл (CSV). Примеры см. в разделе Пример.
Примечание
Поставщик ACE (прежнее название — поставщик Jet), который подключается к источникам данных Excel, предназначен для интерактивного клиентского использования. Если поставщик ACE используется на сервере SQL Server, особенно в автоматизированных процессах или процессах, выполняющихся параллельно, вы можете получить непредвиденные результаты.
Распределенные запросы
Импортируйте данные напрямую из файлов Excel в SQL Server с помощью функции Transact-SQL или . Такая операция называется распределенный запрос.
Важно!
В базе данных SQL Azure невозможно импортировать данные непосредственно из Excel. Сначала необходимо экспортировать данные в текстовый файл (CSV). Примеры см. в разделе Пример.
Перед выполнением распределенного запроса необходимо включить параметр в конфигурации сервера, как показано в примере ниже. Дополнительные сведения см. в статье ad hoc distributed queries Server Configuration Option (Параметр конфигурации сервера «ad hoc distributed queries»).
В приведенном ниже примере кода данные импортируются из листа Excel в новую таблицу базы данных с помощью .
Ниже приведен тот же пример с .
Чтобы добавить импортированные данные в существующую таблицу, а не создавать новую, используйте синтаксис вместо синтаксиса из предыдущих примеров.
Для обращения к данным Excel без импорта используйте стандартный синтаксис .
Дополнительные сведения о распределенных запросах см. в указанных ниже разделах.
- Распределенные запросы (Распределенные запросы по-прежнему поддерживаются в SQL Server 2016, но документация по этой функции не обновлена.)
- OPENROWSET
- OPENDATASOURCE
Связанные серверы
Кроме того, можно настроить постоянное подключение от SQL Server к файлу Excel как к связанному серверу. В примере ниже данные импортируются из листа Excel на существующем связанном сервере в новую таблицу базы данных SQL Server с именем .
Вы можете создать связанный сервер в SQL Server Management Studio или запустить системную хранимую процедуру , как показано в примере ниже.
Дополнительные сведения о связанных серверах см. в указанных ниже разделах.
- Создание связанных серверов
- OPENQUERY
Примеры и дополнительные сведения о связанных серверах и распределенных запросах см. указанных ниже разделах.
- Использование Excel со связанными серверами SQL Server и распределенными запросами
- Импорт данных из Excel в SQL Server
Код VBA для выгрузки объекта Recordset в Excel
Теперь давайте напишем код, который позволяет выгружать объект Recordset, данные которого получены, скажем с помощью запроса к базе данных. Для этого добавьте еще одну кнопку (я ее назвал RSExportInExcel2) и вставьте немного модифицированный код:
Код VBA
Private Sub RSExportInExcel2_Click() On Error GoTo Err1 'Переменные Dim XLApp As Object, XLBook As Object, XLSheet As Object, RS As ADODB.Recordset Dim CountColumn As Integer, WidthColumn As Integer, StrSQLInExcel As String 'Создаем объекты: Excel, Книгу, Лист Set XLApp = CreateObject("Excel.Application") Set XLBook = XLApp.Workbooks.add Set XLSheet = XLBook.Worksheets(1) 'Создаем новый Recordset Set RS = New ADODB.Recordset 'Текст запроса SQL, т.е. сюда можете вставить свой запрос, например, формировать его динамически StrSQLInExcel = "SELECT * FROM TestTable" 'Получаем данные по текущему соединению RS.open StrSQLInExcel, CurrentProject.Connection 'Узнаем количество колонок в Recordset CountColumn = RS.Fields.count 'Циклом заполняем заголовки колонок For i = 0 To CountColumn - 1 'Передвигаемся по колонкам в Excel путем смещения XLSheet.Range("A1").offset(0, i).value = RS.Fields(i).NAME 'Немного подкорректируем внешний вид выгрузки 'Ширину колонки определим динамически на основе длины поля, но не более 20 и не менее 6 WidthColumn = Len(RS.Fields(i).NAME) + 2 If WidthColumn > 20 Then WidthColumn = 20 ElseIf WidthColumn < 6 Then WidthColumn = 10 End If 'Задаем для заголовка 'Перенос по словам XLSheet.Rows(1).WrapText = True 'Выравнивание XLSheet.Rows(1).HorizontalAlignment = xlCenter XLSheet.Rows(1).VerticalAlignment = xlCenter 'Цвет фона XLSheet.Rows(1).Interior.ColorIndex = 15 'Ширина XLSheet.Columns(i + 1).ColumnWidth = WidthColumn Next 'Записываем Recordset в Excel XLSheet.Range("A2").CopyFromRecordset RS 'Делаем видимым Excel XLApp.Visible = True 'Закрываем Recordset RS.close Set RS = Nothing Ex1: Exit Sub Err1: MsgBox Err.Description Resume Ex1 End Sub
Снова сохраняем и пробуем нажать на кнопку, в итоге у нас получится точно такая же выгрузка, как и чуть ранее, только сейчас в качестве источника данных Recordset у нас может выступать любой запрос, а не только данные формы.
На этом у меня все! Надеюсь, материал был Вам полезен, пока!
Нравится5Не нравится
Список методов
Для импорта данных из Excel можно использовать следующие средства:
Сначала экспортировать в текст (SQL Server и база данных SQL) | Непосредственно из Excel (только в локальной среде SQL Server) |
---|---|
Инструкция | |
Функция | |
. | |
Если вы хотите импортировать несколько листов из книги Excel, обычно нужно запускать каждое из этих средств отдельно для каждого листа.
Этот список не дает полного описания таких сложных инструментов и служб, как SSIS или фабрика данных Azure. Дополнительные сведения об интересующем вас решении доступны по ссылкам ниже.
Важно!
Дополнительные сведения о подключении к файлам Excel, а также об ограничениях и известных проблемах, связанных с загрузкой данных в файлы этого приложения и из них, см. в разделе Загрузка данных в приложение Excel или из него с помощью служб SQL Server Integration Services (SSIS).
Если у вас не установлен SQL Server или SQL Server есть, но нет SQL Server Management Studio, см. статью Скачивание SQL Server Management Studio (SSMS).
Импорт данных из таблицы
Теперь давайте импортируем данные из другого источника, из существующей книги. Затем укажем связи между существующими и новыми данными. Связи позволяют анализировать наборы данных в Excel и создавать интересные и эффектные визуализации импортированных данных.
Начнем с создания пустого листа, а затем импортируем данные из книги Excel.
Вставьте новый лист Excel и назовите его Sports.
Перейдите к папке, в которой содержатся загруженные файлы образцов данных, и откройте файл OlympicSports.xlsx.
Выберите и скопируйте данные на листе Sheet1. При выборе ячейки с данными, например, ячейки А1, можно нажать клавиши Ctrl + A, чтобы выбрать все смежные данные. Закройте книгу OlympicSports.xlsx.
На листе Sports поместите курсор в ячейку А1 и вставьте данные.
Выделив данные, нажмите клавиши CTRL + T, чтобы отформатировать данные как таблицу. Вы также можете отформатировать данные в виде таблицы на ленте, выбрав в _Гт_ формат таблицы. Так как у данных есть заголовки, в появившемся окне Создание таблицы выберите пункт таблица с заголовками, как показано ниже.
Форматирование данных в виде таблицы имеет много преимуществ. Можно назначить имя таблице, что упрощает ее определение. Кроме того, вы можете устанавливать связи между таблицами, позволяя исследовать и анализировать в сводных таблицах, Power Pivot и в Power View.
ПриСвойте таблице имя. В разделе Работа с таблицаМи _Гт_ свойства _ГТ_ макета найдите поле имя таблицы и введите Спорт. Книга будет выглядеть так, как показано на следующем экране.
Использование данных Excel в Access
Процесс импорта данных Excel в Access может показаться несколько запутанным, хотя на самом деле таковым не является. Все дело в количестве используемых в процессе параметров. Вы можете либо импортировать данные непосредственно в таблицу Access, либо создать связь с таблицей Excel. Спрашиваете, в чем различие? Импортированные данные записываются в Access, а связанные остаются в Excel, несмотря на то, что являются доступными для применения в базе данных. Более подробное описание этих операций приводится в двух следующих разделах.
Импорт данных Excel в таблицу Access
Под импортом подразумевается обычное копирование (передача) данных из одного файла в другой. При этом Access данные не модифицирует. В настоящем разделе описывается копирование данных Excel в Access. После того как данные записываются в таблицу Access, изменение базовых данных в Excel не отражается на импортированных данных Access. Нам необходимо импортировать файл КаталогиЕхсеl.xls, выполнив такие действия.
- Выберите в окне базы данных команду Файл › Внешние данные › Импорт.
- В меню Тип файла выберите Microsoft Office Excel (*.xls), затем в списке файлов укажите КаталогиЕхсеl.хls и щелкните на кнопке Импорт. Кроме того, можно дважды щелкнуть на этом файле. В любом случае будет запущен мастер Импорт электронной таблицы.
- В первую очередь мастеру нужно знать, что импортируется – вся таблица или ее именованный диапазон. Под именованным диапазоном в Excel подразумевается определенный набор ячеек, к которым можно обращаться с использованием указанного имени. В данной таблице именованных диапазонов нет, поэтому оставьте выбранным переключатель Листы. Если вы установите переключатель Именованные диапазоны, список, расположенный справа, не изменится (так как именованных диапазонов не существует). В нижней части окна мастера приведены данные таблицы. Щелкните на кнопке Далее.
- В следующем окне в качестве имен полей можно указать заголовки столбцов Excel. Рекомендуется всегда устанавливать флажок Первая строка содержит заголовки столбцов. В противном случае имена полей будут обрабатываться Excel как обычные записи. Установив флажок, щелкните на кнопке Далее.
- Мастер позволяет сохранить данные в новой таблице или в уже существующей. По умолчанию выбран переключатель В новой таблице. Не изменяя ничего в этом окне, щелкните на кнопке Далее.
- В следующем окне выполняются многие действия. Во-первых, можно переименовать любое поле, выбрав его в нижнем списке и указав имя в элементе управления Имя поля. Во-вторых, можно указать индекс, о котором рассказывается в главе 11, «Настройка таблиц». Если Access затрудняется в интерпретации данных, активизируется список Тип данных, с помощью которого можно указать тип данных для поля. Выбор флажка Не импортировать (пропустить) поле приведет к отмене импорта определенного поля. Оставьте все параметры без изменений и щелкните на кнопке Далее.
- На данном этапе мастер намеревается помочь в определении первичного ключа. По умолчанию предполагается создание нового ключа автонумерации. Выберите переключатель Определить ключ, а затем, в раскрывающемся списке справа, опцию Имя. Затем щелкните на кнопке Далее (информация о первичных ключах содержится в главе 4, «Планирование базы данных»).
- В последнем окне присвойте новой таблице имя. Таблица Каталоги уже существует, поэтому введите имя КаталогиИзЕхсеl и щелкните на кнопке Готово. На экране появится сообщение об импорте электронной таблицы. Щелкните на кнопке ОК.
- В окне Растения: база данных найдите новую таблицу и откройте ее. Таблица с импортированными данными показана на рис. 16.3. Она очень похожа на исходную таблицу Каталоги – у них даже общий первичный ключ. Данные в процессе выполнения операций экспорта-импорта практически не изменились.
Рис. 16.3. Мастер создал новую таблицу и скопировал в нее данные из таблицы Excel
Экспорт данных из Access в шаблон Word
Вся разработка делится на две части, это:
- Настройка шаблона Word;
- Настройка выгрузки данных в шаблон.
Суть настройки шаблона заключается в том, чтобы проставить необходимые поля в тех местах шаблона, где нужно выводить те или иные данные. Это делается с помощью полей формы.
Примечание! Я использую Microsoft Word 2003.
Открываем шаблон Word, для начала добавим необходимую панель инструментов, для этого нажимаем «Вид -> Панель инструментов» и ставим галочку «Формы». Теперь у Вас отобразилась панель инструментом «Формы». Все, что осталось сделать — это вставить в местах, в которых необходимо выводить данные, элементы «Текстовое поле», которые доступны на только что добавленной панели инструментов.
После добавления поля, у Вас появится серая область, которая свидетельствует о том, что поле добавлено. Теперь необходимо задать имя этого поля, для того чтобы потом из access вставлять в него значения (стандартное названия не очень удобное). Для этого щелкните правой кнопкой мыши по полю и нажмите «Свойства». В поле закладка напишите желаемое имя этого поля, я в примере назвал его MyTestPole.
Создайте столько полей, сколько Вам нужно.
На этом настройка шаблона закончена, рекомендую сделать этот шаблон только для чтения, а то пользователь возьмет, сформирует документ и сохранит его, и шаблон тем самым потеряется, а если сделать его только для чтения, то у него такой возможности не будет, только сохранять через «Сохранить как».
Переходим к более интересной задачи, это к реализации самой выгрузки из Access в этот шаблон на VBA.
Примечание! Я использую Access в связке с MS SQL 2008, поэтому и данные буду брать от туда.
Код VBA для выгрузки данных в шаблон Word
Допустим, у Вас есть форма, сделайте на ней кнопку (я назвал ее testbutton) и в событие нажатие кнопки вставьте следующий код VBA:
Private Sub testbutton_Click() 'Объявляем переменные Dim FileDialog As FileDialog Dim rsd As ADODB.Recordset Dim strSQL As String Dim WordApOb As Object Dim WordOb As Object Dim path As String Set rsd = New ADODB.Recordset 'запрос к базе данных для получения необходимых данных strSQL = "select * from dbo.table where KOD = " & Me.kod & "" rsd.open strSQL, CurrentProject.Connection 'Выбираем шаблон Set FileDialog = Application.FileDialog(msoFileDialogOpen) 'убираем множественный выбор, он нам не нужен FileDialog.AllowMultiSelect = False 'очистим и установим фильтры FileDialog.Filters.Clear FileDialog.Filters.add "Word", "*.doc" 'установим фильтр по умолчанию FileDialog.FilterIndex = 1 'проверяем, что сделал user, если выбрал шаблон, то начинаем работу If FileDialog.Show = False Then 'Если нет, то выходим Set dlgFile = Nothing Exit Sub End If 'получаем путь к файлу path = Trim(FileDialog.SelectedItems(1)) 'Очистим переменную Set FileDialog = Nothing If path <> "" Then 'Будем отслеживать ошибки On Error GoTo Err_testbutton_Click 'Создаем объект Word Set WordOb = CreateObject("Word.document") 'Задаем нашему документу значение из шаблона Set WordOb = GetObject(path) 'Задаем значение объекту word.Application Set WordApOb = WordOb.Parent 'делаем приложение word видимым WordApOb.Visible = True 'ищем наше поле в шаблоне WordOb.Bookmarks("mytestpole").Select 'задаем ему новое значение из нашего Recordset WordApOb.Selection.TypeText Text:=Nz(rsd.Fields("field").Value, " ") 'и так далее по всем полям 'в конце перейдем на начало нашего документа WordApOb.Selection.Goto wdGoToFirst 'и активируем его WordApOb.Activate 'Очистим переменные Set WordOb = Nothing Set WordApOb = Nothing Exit_testbutton_Click: Exit Sub Err_testbutton_Click: MsgBox Err.Description 'в случае ошибки будем делать следующие 'закроем word без сохранения WordOb.Close (wddonotsavechanges) WordApOb.Quit 'и также очистим переменные Set WordOb = Nothing Set WordApOb = Nothing Resume Exit_testbutton_Click End If End Sub
Код прокомментирован, поэтому сложностей возникнуть не должно. Здесь весь смысл сводится к созданию объекта word.document и word.application. А после мы уже работаем с нашими объектами, т.е. заполняем их.
Импорт и экспорт данных в Excel 2010
Вы ведь помните о том, что весной у нас проходил конкурс статей? И о том, что я обещала опубликовать то, что сразу не получилось? И сегодня я вытаскиваю из архивов очень полезную статью от Михаила Чернякова.
Статья будет про импорт и экспорт данных в Excel 2010.
Импорт данных из файлов других форматов
Если у вас имеются данные в совместимом формате (например, в виде текстового файла, таблиц баз данных, Интернет и других источников), можно импортировать эти данные в Ехсеl 2010 (рис.1).
1. Чтобы импортировать данные из текстового файла, на вкладке Данные в разделе Получить внешние данные щелкните на кнопке Из текста (рис.2).
2. В результате отобразиться диалоговое окно Импорт текстового файла (рис.3).
3. С помощью этого диалогового окна (рис.3) можно перейти в папку, содержащую файл, который нужно импортировать. Двойной щелчок на файле или по кнопке Импорт запускает Мастер импорта текста (рис.4).
4. Первая страница мастера позволяет указать формат данных: с разделителем или с фиксированной шириной. Фиксированная ширина означает, что поля имеют заданную ширину. Необходимо также указать место начала импорта и Формат файла, например, Кириллица. Если щелкнуть на кнопке Далее, мастер примет заданный по умолчанию параметр и перейдет к следующей странице (рис.5).
5. На второй странице мастера (рис.5) можно выбрать разделитель (в данном случае Ехсеl обнаружил в файле символ табуляции и выделил соответствующий флажок) и просмотреть образец разбора данных. При предварительном просмотре в качестве символа разделения была использована запятая (рис.4), поэтому необходимо выделить флажком символ-разделителя Запятая. Щелкнув на кнопке Далее, можно перейти к последней странице мастера (рис.6).
6. 3-я страница позволяет указать формат данных для каждого столбца. Поскольку числовые форматы и экспресс-стили можно присвоить после создания сводной таблицы, можно щелкнуть на кнопке Готово, чтобы указать место куда импортировать данные в рабочий лист и настройке свойств внешнего диапазона (рис.7).
7. Нажав кнопку ОК завершается процесс импорта данных и они появляются на рабочем столе (рис.8).
Аналогично можно импортировать эти данные в Ехсеl 2010 и из других источников (рис.9).
Экспорт данных в файл
Чтобы осуществить Экспорт данных в файл необходимо перейти на вкладку Файл и воспользоваться командой Сохранить и отправить.
Команда Изменить тип файла позволяет изменять тип файла на другие Типы файлов книг и Другие типы файлов, включая текстовые, а также воспользоваться командой Сохранить как.
1. Выполните команду: Файл ðСохранить и отправить ð Изменить тип файла ð Другие типы файлов ð Текстовой формат с разделителями табуляции (рис.11).
2. В диалоговом окне Сохранение документа нажмите кнопку Сохранить (рис.11). Нажмите ОК, чтобы подтвердить, что желаете сохранить текущий лист (рис.12).
3. В результате будет создан текстовой файл, в котором данные книги будет разделены знаками табуляции (рис.13).
Аналогично можно импортировать эти данные из Ехсеl 2010 и в другие источники, воспользоваться командой Сохранить как, например, как MHTML-документ (рис.14).
Выводы и рекомендации
1. Импортировать данные в Ехсеl 2010 можно из совместимых форматов в виде текстового файла, таблиц баз данных, Интернет и других источников.
2. Экспорт данных в файл необходимо осуществлять с вкладки Файл, воспользоваться командами Сохранить и отправить или Сохранить как.
Учебник: импорт данных в Excel и создание модели данных
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки
Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы
Для удобства также приводим ссылку на оригинал (на английском языке).
Аннотация. Это первый учебник из серии, который поможет ознакомиться с программой Excel и ее возможностями объединения и анализа данных, а также научиться легко использовать их. С помощью этой серии учебников вы научитесь создавать с нуля и совершенствовать рабочие книги Excel, строить модели данных и создавать удивительные интерактивные отчеты с использованием надстройки Power View. В этих учебниках приводится описание возможностей средств бизнес-аналитики Майкрософт в Excel, сводных таблиц, Power Pivot и Power View.
Примечание: В этой статье описаны модели данных в Excel 2013. Однако те же функции моделирования данных и Power PIVOT, представленные в Excel 2013, также применимы к Excel 2016.
Вы узнаете, как импортировать и просматривать данные в Excel, строить и совершенствовать модели данных с использованием Power Pivot, а также создавать с помощью надстройки Power View интерактивные отчеты с возможностью публикации, защиты и предоставления общего доступа.
Учебники этой серии
Импорт данных в Excel 2013 и создание модели данных
В этом учебнике вы начнете работу с пустой книги Excel.
Распространенные ошибки
«Microsoft.ACE.OLEDB.12.0» не зарегистрирован
Эта ошибка возникает, так как не установлен поставщик OLE DB. Установите его через Распространяемый пакет ядра СУБД Microsoft Access 2010. Не забудьте установить 64-разрядную версию, если Windows и SQL Server — 64-разрядные.
Полный текст ошибки.
Это означает, что Microsoft OLEDB не был настроен должным образом. Чтобы устранить проблему, выполните приведенный ниже код Transact-SQL.
Полный текст ошибки.
Это происходит, когда 32-разрядная версия поставщика OLD DB устанавливается вместе с 64-разрядной версией SQL Server. Чтобы устранить эту проблему, удалите 32-разрядную версию и вместо нее установите 64-разрядную версию поставщика OLE DB.
Полный текст ошибки.
Экспорт данных из access в excel
Номер ответа: 1Автор ответа:AndreyMp
Номер ответа: 2Автор ответа:vito
Разработчик Offline Client
Вот пример из хелпа.
Dim dbsNorthwind As Database Dim qdfTemp As QueryDef Dim qdfNew As QueryDef
Set dbsNorthwind = OpenDatabase(«Northwind.mdb"
With dbsNorthwind ‘ Create temporary QueryDef. Set qdfTemp = .CreateQueryDef(«», _ «SELECT * FROM Employees" ‘ Open Recordset and print report. GetrstTemp qdfTemp ‘ Create permanent QueryDef. Set qdfNew = .CreateQueryDef(«NewQueryDef», _ «SELECT * FROM Categories" ‘ Open Recordset and print report. GetrstTemp qdfNew ‘ Delete new QueryDef because this is a demonstration. .QueryDefs.Delete qdfNew. Name .Close End With
Function GetrstTemp(qdfTemp As QueryDef)
Dim rstTemp As Recordset
With qdfTemp Debug . Print . Name Debug . Print » » & .SQL ‘ Open Recordset from QueryDef. Set rstTemp = .OpenRecordset(dbOpenSnapshot)
With rstTemp ‘ Populate Recordset and print number of records. .MoveLast Debug . Print » Number of records = » & _ .RecordCount Debug . Print .Close End With
Номер ответа: 3Автор ответа:A n t o n i n a
Андрей, буду очень признательна, если поделишься своими замечательными процедурками.
Номер ответа: 4Автор ответа:AndreyMp
Номер ответа: 5Автор ответа:AndreyMp
Номер ответа: 6Автор ответа:A n t o n i n a
Номер ответа: 7Автор ответа:AndreyMp
Номер ответа: 8Автор ответа:A n t o n i n a
Номер ответа: 9Автор ответа:HACKER
Разработчик Offline Client
Ну и как вариант через ADO, а принцип с экселем тот же.
Public Function Export2XL(InitRow As Long , DBAccess As String , DBTable As String ) As Long ‘+ ‘ Экспортирует с базы в Exel Dim cn As New ADODB.Connection ‘Use for the connection string Dim cmd As New ADODB.Command ‘Use for the command for the DB Dim rs As New ADODB.Recordset ‘Recordset return from the DB Dim MyIndex As Integer ‘Used for Index Dim MyRecordCount As Long ‘Store the number of record on the table Dim MyFieldCount As Integer ‘Store the number of fields or column Dim ApExcel As Object ‘To open Excel Dim MyCol As String Dim Response As Integer
Set ApExcel = CreateObject(«Excel.application" ‘Creates an object
ApExcel.Visible = True ‘This enable you to see the process in Excel ApExcel.Workbooks.Add ‘Adds a new book.
‘Set the connection string cn.ConnectionString = «Provider=Microsoft.Jet.OLEDB.4.0ata Source=» & DBAccess ‘Open the connection cn. Open
‘Check that the connection is open If cn.State = 0 Then cn. Open Set cmd.ActiveConnection = cn cmd.CommandText = DBTable cmd.CommandType = adCmdTable Set rs = cmd.Execute ‘Count the number of fields or column MyFieldCount = rs.Fields.Count
‘Fill the first line with the name of the fields For MyIndex = 0 To MyFieldCount — 1 ApExcel.Cells(InitRow, (MyIndex + 1)).Formula = rs.Fields(MyIndex). Name ‘Write Title to a Cell ApExcel.Cells(InitRow, (MyIndex + 1)).Font.Bold = True ApExcel.Cells(InitRow, (MyIndex + 1)).interior.colorindex = 36 ApExcel.Cells(InitRow, (MyIndex + 1)).WrapText = True Next
‘Draw border on the title line MyCol = Chr((64 + MyIndex)) & InitRow ApExcel.Range(«A» & InitRow & «:» & MyCol).Borders.Color = RGB(0, 0, 0) MyRecordCount = 1 + InitRow
‘Fill the excel book with the values from the database Do While rs.EOF = False For MyIndex = 1 To MyFieldCount ApExcel.Cells(MyRecordCount, MyIndex).Formula = rs((MyIndex — 1)).Value ‘Write Value to a Cell ApExcel.Cells(MyRecordCount, MyIndex).WrapText = False ‘Format the Cell Next MyRecordCount = MyRecordCount + 1 rs.MoveNext If MyRecordCount > 50 Then Exit Do End If Loop
‘Close the connection with the DB rs.Close
‘Return the last position in the workbook Export2XL = MyRecordCount End Function
Экспорт данных в Excel: основы
При экспорте данных в Excel приложение Access создает копию выбранных данных, а затем сохраняет их в файле, который можно открыть в Excel. Если данные требуется копировать из Access в Excel достаточно часто, можно сохранить параметры операции экспорта для повторного использования и даже запланировать ее автоматический запуск через определенные интервалы времени.
Стандартные сценарии экспорта данных в Excel
В отделе или рабочей группе для работы с данными используется как Access, так и Excel. Данные хранятся в базах данных Access, но для анализа и распространения его результатов используется Excel. Группа выполняет экспорт данных в Excel по мере необходимости, но этот процесс требуется сделать более эффективным.
Вы используете Access, но ваш руководитель предпочитает работать с данными в Excel. Вам приходится регулярно копировать данные в Excel, но вам хотелось бы автоматизировать этот процесс ради экономии времени.
Об экспорте данных в Excel
В приложении Access нет команды «Сохранить как” с возможностью сохранения данных в формате Excel. Чтобы скопировать данные в Excel, необходимо воспользоваться функций экспорта, описанной в этой статье, либо скопировать данные Access в буфер обмена, а затем вставить их в таблицу Excel.
Можно экспортировать таблицу, запрос, форму или отчет, а также отдельные записи в представлении.
В приложении Microsoft Excel есть команда импорта данных из базы данных Access. Ее можно использовать вместо команды экспорта Access, однако с помощью команды импорта в Excel можно импортировать только таблицы и запросы. Дополнительные сведения см. в разделе справки Excel Подключение к внешним данных и их импорт.
Экспортировать макросы и модули нельзя. При экспорте формы, отчета или таблицы с подчиненными формами, отчетами или таблицами экспортируется только главная форма, отчет или таблица. Все подчиненные формы, отчеты и таблицы следует экспортировать в Excel отдельно.
В ходе операции экспорта можно экспортировать лишь один объект базы данных. Однако после нескольких операций экспорта можно выполнить в Excel слияние нескольких листов.
Шаг 3: Создайте сценарий или импортируйте автоматически
По мере прохождения шагов в мастере мы будем держать панель предварительного просмотра содержимого файла под рукой, так что вам не придется нажимать туда и обратно от Excel до SQL Developer.
Для этого упражнения будет использоваться метод «Вставки» (Insert). Каждая строка, обработанная в файле Excel, приведет к выполнению инструкции в таблице, в которую мы импортируем.
Если вы выберете «Вставить скрипт», мастер завершит работу скриптом ВСТАВКИ на вашем листе SQL. Это хорошая альтернатива, если вы хотите настроить SQL, или если вам нужно отладить/посмотреть, почему метод «Insert» не работает.
Листы и диапазоны
В качестве источника или назначения для данных можно использовать три типа объектов Excel: лист, именованный диапазон или неименованный диапазон ячеек, который задается с помощью адреса.
-
Лист Чтобы указать лист, добавьте в конец имени листа символ и окружите строку разделителями, например . Также можно выполнить поиск имени, заканчивающегося символом , в списке существующих таблиц и представлений.
-
Именованный диапазон Чтобы указать именованный диапазон, используйте имя диапазона, например Мой_диапазон. Также можно выполнить поиск имени, не заканчивающегося символом , в списке существующих таблиц и представлений.
-
Неименованный диапазон Чтобы указать диапазон ячеек, которым не были заданы имена, добавьте символ $ после имени листа, добавьте спецификацию диапазона и окружите строку разделителями, например .
Чтобы выбрать или указать тип объекта Excel, который вы хотите использовать в качестве источника или назначения для данных, выполните одно из следующих действий:
В службах SSIS
В службах SSIS на странице Диспетчер соединений в редакторе источника Excel или редакторе назначения Excel выполните одно из следующих действий:
-
Чтобы использовать лист или именованный диапазон, выберите Таблица или представление в разделе Режим доступа к данным. Затем выберите лист или именованный диапазон в списке Имя листа Excel.
-
Чтобы использовать неименованный диапазон, который задается по адресу, выберите Команда SQL в разделе Режим доступа к данным. Затем в поле Текст команды SQL введите запрос, аналогичный представленному ниже примеру:
В мастере импорта и экспорта SQL Server
В мастере импорта и экспорта выполните одно из следующих действий:
-
При импорте из Excel выполните одно из следующих действий:
-
Чтобы использовать лист или именованный диапазон, на странице Выбор копирования таблицы или запроса выберите Скопировать данные из одной или нескольких таблиц или представлений. Затем на странице Выбор исходных таблиц и представлений в столбце Источник укажите исходные листы и именованные диапазоны.
-
Чтобы использовать неименованный диапазон, который задается по адресу, на странице Выбор копирования таблицы или запроса выберите Написать запрос, указывающий данные для передачи. Затем на странице Определение исходного запроса введите запрос, аналогичный показанному ниже:
-
-
При экспорте в Excel выполните одно из следующих действий:
-
Чтобы использовать лист или именованный диапазон, на странице Выбор исходных таблиц и представлений в столбце Назначение выберите целевые листы и именованные диапазоны.
-
Чтобы использовать неименованный диапазон, который задается по адресу, на странице Выбор исходных таблиц и представлений в столбце Назначение укажите диапазон в следующем формате без использования разделителей: . Мастер автоматически добавит разделители.
-
После выбора или ввода объектов Excel для импорта или экспорта вы также можете выполнить следующие действия на странице Выбор исходных таблиц и представлений мастера:
-
Проверить сопоставления столбцов между источником и назначением, выбрав команду Изменить сопоставления.
-
Выполнить предварительный просмотр данных, чтобы убедиться в правильности выбора, с помощью команды Предварительный просмотр.