Использование ADO.NET для извлечения и модификации записей книги Excel с помощью Visual Basic .NET

Код статьи: 316934 - Список продуктов, к которым относится данная статья.
Развернуть все | Свернуть все

На этой странице

Аннотация

В этой статье рассмотрены вопросы использования ADO.NET для извлечения и изменения данных существующей книги Excel, а также добавления данных в новую книгу. Кроме того, статья содержит сведения об использовании поставщика данных Jet OLE DB для получения доступа к книгам Excel с помощью ADO.NET.

Использование поставщика данных Jet OLE DB с книгами Microsoft Excel

Модуль базы данных Microsoft Jet использует для получения доступа к данным в файлах другого формата (например, книгам Excel) дополнительно устанавливаемые драйверы индексно-последовательного метода доступа (ISAM). Чтобы открыть сторонний файл, формат которого поддерживается поставщиком данных Microsoft Jet 4.0 OLE DB, в расширенных свойствах подключения необходимо указать тип базы данных. Поставщик данных Jet OLE DB поддерживает следующие типы баз данных для книг Microsoft Excel:
Excel 3.0
Excel 4.0
Excel 5.0
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 2000 и Excel 2002.

Строка подключения

Для получения доступа к книгам Excel с помощью поставщика данных Jet OLE DB используется следующая строка подключения.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Book1.xls;Extended Properties="Excel 8.0;HDR=YES;"
Параметру Data Source строки подключения необходимо присвоить полное имя книги (включая путь). Параметр Extended Properties содержит два свойства: первое соответствует версии ISAM, а второе указывает, содержит ли таблица заголовки.

По умолчанию в книге Excel первая строка диапазона считается строкой заголовков (имен полей). Если первая строка не содержит заголовков, необходимо в расширенные свойства строки подключения включить инструкцию HDR=NO. В этом случае поставщик данных Jet OLE DB назначает имена полей автоматически (F1 соответствует первому полю, F2 — второму и так далее).

Типы данных

В отличие от традиционных баз данных, в таблицах Excel не предусмотрена возможность указывать типы данных в столбцах. Поставщик данных OLE DB определяет тип данных в столбце на основании значений в восьми строках. Чтобы изменить количество просматриваемых строк, необходимо включить в расширенные свойства строки подключения параметр MAXSCANROWS со значением в диапазоне от 1 до 16.

Принятые соглашения об именах таблиц

Существует несколько возможностей определения ссылки на таблицу или диапазон книги Excel.
  • Имя листа с последующим символом $ (например, [Лист1$] или [Мой лист$]). Использование такой ссылки означает включение всего рабочего листа.
    Select * from [Лист1$]
  • Имя диапазона (например, [Мой_диапазон]):
    Select * from [Мой_диапазон]
  • Диапазон, заданный адресами ячеек (например, [Лист1$A1:B10]):
    Select * from [Лист1$A1:B10]
ПРИМЕЧАНИЕ. Символ $ после имени листа свидетельствует о том, что таблица существует. В случае создания таблицы этот символ не используется (см. раздел Создание книг и таблиц этой статьи).

Использование книги Excel в качестве источника данных ADO.NET

Извлечение записей

В ADO.NET существует два метода извлечения данных: Dataset и DataReader.

Dataset представляет собой кэшированный набор записей, извлеченных из источника данных. Данные в Dataset обычно имеют усеченный вид по сравнению с базой данных, однако их можно обрабатывать теми же средствами, не подключаясь при этом к исходной базе данных. Помимо извлечения данных Dataset используется для их обновления в базе данных.

Метод DataReader предназначен для извлечения из базы данных однонаправленного потока данных только для чтения. Использование программы DataReader приводит к повышению быстродействия и снижает загруженность системы, поскольку в каждый момент времени в памяти находится только одна строка. Если необходимо извлечь большой объем данных и не требуется вносить изменения в исходную базу данных, целесообразно использовать метод DataReader, а не Dataset.

Добавление и обновление записей

Существует три способа добавления и обновления записей книги с помощью ADO.NET.
  • Непосредственный запуск команды для поочередного добавления или обновления записей. Для этого необходимо создать на подключении объект OLEDbCommand и присвоить свойству CommandText этого объекта допустимую команду вставки записей

    INSERT INTO [Лист1$] (F1, F2) values ('111', 'ABC')
    или обновления записей

    UPDATE [Лист1$] SET F2 = 'XYZ' WHERE F1 = '111'
    , а затем вызвать метод ExecuteNonQuery.
  • Внесение изменений в объект DataSet, который содержит таблицу или отдельные строки книги Excel, и вызов метода Update функции DataAdapter для переноса изменений в исходную книгу. Однако, чтобы воспользоваться методом Update для переноса изменений, необходимо назначить команду с параметрами для объектов DataAdapter InsertCommand
    INSERT INTO [Лист1$] (F1, F2) values (?, ?)
    и UpdateCommand:
    UPDATE [Лист1$] SET F2 = ? WHERE F1 = ?
    Команды INSERT и UPDATE с параметрами необходимы, поскольку объект OleDbDataAdapter не предоставляет ключевых и индексных полей для книги Excel (без этих полей невозможно автоматическое создание команд с помощью метода CommandBuilder).
  • Экспорт данных в книгу Excel из другого источника (при условии, что этот источник может взаимодействовать с поставщиком данных Jet OLE DB). К числу таких источников данных относятся текстовые файлы, базы данных Microsoft Access и другие книги Excel. Для вставки данных в книгу из другой таблицы или запроса служит команда INSERT INTO:
    INSERT INTO [Лист1$] IN 'C:\Книга1.xls' 'Excel 8.0;' SELECT * FROM Моя_таблица"
    Для использования команды INSERT INTO необходимо, чтобы целевая таблица (лист) уже существовала. Данные добавляются в эту таблицу.

    Кроме того, для экспортирования таблицы или запроса применяется команда SELECT..INTO:
    SELECT * INTO [Excel 8.0;Database=C:\Книга1.xls].[Лист1] FROM [Моя_таблица]
    Если целевая таблица или книга не существует, она будет создана. Если таблица существует до применения команды SELECT..INTO, появится сообщение об ошибке.
В разделе Пример программы этой статьи продемонстрирован каждый из этих способов добавления и обновления записей книги.

Удаление записей

Хотя поставщик данных Jet OLE DB позволяет добавлять записи в книгу Excel и обновлять их, он не поддерживает операции удаления (DELETE) записей книги Excel. При попытке использовать команду DELETE для удаления записей появится следующее сообщение об ошибке:
Deleting data in a linked table is not supported by this ISAM.
This limitation is inherent in the treatment of Excel workbooks as databases.

Создание книг и таблиц

Для создания таблиц в книге Excel служит команда CREATE TABLE:
CREATE TABLE Лист1 (F1 char(255), F2 char(255))
Выполнение этой команды приводит к созданию нового листа с указанным для таблицы именем. Если книга не существует, она будет создана.

Пример использования команды CREATE TABLE для создания новой таблицы и книги см. в разделе Пример программы этой статьи.

Инструкции

Пример программы

  1. Создайте новый проект Visual Basic .NET типа Windows Application.

    По умолчанию будет создана форма Form1.
  2. Добавьте в форму Form1 шесть переключателей и одну кнопку.
  3. Выберите все переключатели и установите для свойства Size значение 200,24.
  4. В меню View выберите пункт Code.
  5. В начало модуля программного кода добавьте следующую строку:
    Imports System.Data.OleDb
  6. Скопируйте в класс Form следующий программный код.
    Private m_sConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=C:\ExcelData1.xls;" & _
                   "Extended Properties=""Excel 8.0;HDR=YES"""
    
    Private m_sConn2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=C:\ExcelData2.xls;" & _
                   "Extended Properties=""Excel 8.0;HDR=YES"""
    
    Private m_sNorthwind = _
          "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    
    Private m_sAction As String
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          RadioButton1.Text = "Create_Workbook"
          RadioButton2.Text = "Retrieve_Records"
          RadioButton3.Text = "Add_Records"
          RadioButton4.Text = "Update_Records"
          RadioButton5.Text = "Update_Individual_Cells"
          RadioButton6.Text = "Use_External_Source"
          Button1.Text = "Go!"
    End Sub
    
    Private Sub RadioButtons_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
          Handles RadioButton1.Click, RadioButton2.Click, RadioButton3.Click, _
          RadioButton4.Click, RadioButton5.Click, RadioButton6.Click
          m_sAction = sender.Text'Сохранять текст для выбранного переключателя
    End Sub
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          Try
             ' Вызов сопоставленной подпрограммы для добавления, обновления или изменения книги.
             Select Case m_sAction
                Case "Create_Workbook" : Create_Workbook()
                Case "Retrieve_Records" : Retrieve_Records()
                Case "Add_Records" : Add_Records()
                Case "Update_Records" : Update_Records()
                Case "Update_Individual_Cells" : Update_Individual_Cells()
                Case "Use_External_Source" : Use_External_Source()
             End Select
    
          Catch ex As OleDbException
             Dim er As OleDbError
             For Each er In ex.Errors
                MsgBox(er.Message)
             Next
          Catch ex2 As System.InvalidOperationException
             MsgBox(ex2.Message)
          End Try
    
    
    End Sub
    
    Public Sub Create_Workbook()
    
          ' Если книга уже существует, выводить запрос на удаление.
          Dim answer As MsgBoxResult
          If Dir("C:\ExcelData1.xls") <> "" Or Dir("C:\ExcelData2.xls") <> "" Then
              answer = MsgBox("Удалить существующие книги (C:\ExcelData1.xls и " & _
                       "C:\ExcelData2.xls)?", MsgBoxStyle.YesNo)
              If answer = MsgBoxResult.Yes Then
                  If Dir("C:\ExcelData1.xls") <> "" Then Kill("C:\ExcelData1.xls")
                  If Dir("C:\ExcelData2.xls") <> "" Then Kill("C:\ExcelData2.xls")
              Else
                  Exit Sub
              End If
          End If
    
    '==========================================================================
          ' Создание книги с таблицей EmployeeData. Таблица имеет три
          ' поля: ID (255 знаков), Name (255 знаков) и Birthdate (дата).  
    '==========================================================================
          Dim conn As New OleDbConnection()
          conn.ConnectionString = m_sConn1
          conn.Open()
          Dim cmd1 As New OleDbCommand()
          cmd1.Connection = conn
          cmd1.CommandText = "CREATE TABLE EmployeeData (Id char(255), Name char(255), BirthDate date)"
          cmd1.ExecuteNonQuery()
          cmd1.CommandText = "INSERT INTO EmployeeData (Id, Name, BirthDate) values ('AAA', 'Andrew', '12/4/1955')"
          cmd1.ExecuteNonQuery()
          conn.Close()
    
    '==========================================================================
          ' Создание книги с таблицей InventoryData. Таблица имеет три
          ' поля: Product (255 знаков), Qty (число с плавающей точкой) и Price (денежная единица). 
    '==========================================================================
    
          conn.ConnectionString = m_sConn2
          conn.Open()
          Dim cmd2 As New OleDbCommand()
          cmd2.Connection = conn
          cmd2.CommandText = "CREATE TABLE InventoryData (Product char(255), Qty float, Price currency)"
          cmd2.ExecuteNonQuery()
          cmd2.CommandText = "INSERT INTO InventoryData (Product, Qty, Price) values ('Cola', 200, 1.35)"
          cmd2.ExecuteNonQuery()
          cmd2.CommandText = "INSERT INTO InventoryData (Product, Qty, Price) values ('Chips', 550, 0.89)"
          cmd2.ExecuteNonQuery()
          conn.Close()
    
          ' Примечание. Таким же образом можно использовать для таблиц операции ALTER и DROP.
    
    End Sub
    
    Public Sub Retrieve_Records()
    
          '==========================================================
          'Использование DataReader для чтения данных из таблицы EmployeeData.
          '==========================================================
    
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd1 As New System.Data.OleDb.OleDbCommand("Select * From [EmployeeData$]", conn1)
          Dim rdr As OleDbDataReader = cmd1.ExecuteReader
    
          Debug.WriteLine(vbCrLf & "EmployeeData:" & vbCrLf & "=============")
          Do While rdr.Read()
             Debug.WriteLine(System.String.Format("{0,-10}{1, -15}{2}", _
                rdr.GetString(0), rdr.GetString(1), _
                rdr.GetDateTime(2).ToString("d")))
          Loop
          rdr.Close()
          conn1.Close()
    
          '========================================================
          'Использование DataSet для чтения данных из таблицы InventoryData.
          '========================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds)
          Debug.WriteLine(vbCrLf & "InventoryData:" & vbCrLf & "==============")
          Dim dr As DataRow
          For Each dr In ds.Tables(0).Rows'Выводить результаты в окне
             Debug.WriteLine(System.String.Format("{0,-15}{1, -6}{2}", _
                dr("Product"), dr("Qty"), dr("Price")))
          Next
          conn2.Close()
    
    End Sub
    
    Public Sub Add_Records()
    
    '==========================================================================
          ' Выполнение команды INSERT INTO для добавления записей в книгу. 
    '==========================================================================
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn1
          cmd.CommandText = "INSERT INTO [EmployeeData$] (ID, Name, BirthDate) values ('CCC', 'Charlie', '10/14/48')"
          cmd.ExecuteNonQuery()
          cmd.CommandText = "INSERT INTO [EmployeeData$] (ID, Name, BirthDate) values ('DDD', 'Deloris', '7/19/98')"
          cmd.ExecuteNonQuery()
          conn1.Close()
    
          '====================================================================
          'Использование объекта InsertCommand для добавления записей в таблицу InventoryData
          '.
          '====================================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds, "MyExcelTable")
    
          ' Создание InsertCommand и добавление параметров команды.
          da.InsertCommand = New OleDbCommand( _
             "INSERT INTO [InventoryData$] (Product, Qty, Price) VALUES (?, ?, ?)", conn2)
          da.InsertCommand.Parameters.Add("@Product", OleDbType.VarChar, 255, "Product")
          da.InsertCommand.Parameters.Add("@Qty", OleDbType.Double).SourceColumn = "Qty"
          da.InsertCommand.Parameters.Add("@Price", OleDbType.Currency).SourceColumn = "Price"
    
          ' Добавление двух новых записей к набору данных.
          Dim dr As DataRow
          dr = ds.Tables(0).NewRow
          dr("Product") = "Bread" : dr("Qty") = 390 : dr("Price") = 1,89 : ds.Tables(0).Rows.Add(dr)
          dr = ds.Tables(0).NewRow
          dr("Product") = "Milk" : dr("Qty") = 99 : dr("Price") = 2,59 : ds.Tables(0).Rows.Add(dr)
    
          ' Применение изменений набора данных к текущему источнику данных (книге).
          da.Update(ds, "MyExcelTable")
          conn2.Close()
    
    End Sub
    
    Public Sub Update_Records()
    
    '==========================================================================
          ' Выполнение команды UPDATE для изменения записи в таблице EmployeeData
          '.
    '==========================================================================
          Dim conn1 As New System.Data.OleDb.OleDbConnection(m_sConn1)
          conn1.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn1
          cmd.CommandText = "UPDATE [EmployeeData$] " & _
                        "SET NAME = 'Aaron', BirthDate = '5/4/1975' WHERE ID = 'AAA'"
          cmd.ExecuteNonQuery()
          conn1.Close()
    
          '====================================================================
          ' Использование объекта UpdateCommand для изменения записей в таблице InventoryData
          '.
          '====================================================================
          Dim conn2 As New OleDbConnection(m_sConn2)
          Dim da As New OleDbDataAdapter("Select * From [InventoryData$]", conn2)
          Dim ds As DataSet = New DataSet()
          da.Fill(ds, "MyInventoryTable")
    
          ' Создание UpdateCommand и добавление параметров команды.
          da.UpdateCommand = New OleDbCommand( _
             "UPDATE [InventoryData$] SET Qty = ?, Price=? WHERE Product = ?", conn2)
          da.UpdateCommand.Parameters.Add("@Qty", OleDbType.Numeric).SourceColumn = "Qty"
          da.UpdateCommand.Parameters.Add("@Price", OleDbType.Currency).SourceColumn = "Price"
          da.UpdateCommand.Parameters.Add("@Product", OleDbType.VarChar, 255, "Product")
    
          ' Обновление двух первых записей.
          ds.Tables(0).Rows(0)("Qty") = 1000
          ds.Tables(0).Rows(0)("Price") = 10.1
          ds.Tables(0).Rows(1)("Qty") = 2000
          ds.Tables(0).Rows(1)("Price") = 20,2
    
          ' Применение изменений набора данных к текущему источнику данных (книге).
          da.Update(ds, "MyInventoryTable")
          conn2.Close()
    
    End Sub
    
    Public Sub Update_Individual_Cells()
    
    '==========================================================================
          ' Обновление отдельных ячеек листа EmployeeData,
          ' в частности, изменяются ячейки F3, G3 и I4.
    '==========================================================================
    
          ' Примечание. Строка подключения указывает на то, что таблица *НЕ*
          ' имеет строки заголовков.
          Dim conn As New System.Data.OleDb.OleDbConnection(m_sConn1.Replace("HDR=YES", "HDR=NO"))
          conn.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn
          cmd.CommandText = "UPDATE [EmployeeData$F3:G3] SET F1 = 'Cell F3', F2 = 'Cell G3'"
          cmd.ExecuteNonQuery()
          cmd.CommandText = "UPDATE [EmployeeData$I4:I4] SET F1 = 'Cell I4'"
          cmd.ExecuteNonQuery()
          conn.Close()
    
    End Sub
    
    Public Sub Use_External_Source()
    
          ' Открытие подключения к образцу базы данных Access «Борей»
          Dim conn As New System.Data.OleDb.OleDbConnection( _
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & m_sNorthwind & ";")
          conn.Open()
          Dim cmd As New System.Data.OleDb.OleDbCommand()
          cmd.Connection = conn
    
    '=======================================================================
          ' Выполнение команды INSERT..INTO для базы данных «Борей»: добавление
          ' записей из таблицы или запроса к существующей таблице в книге 
          ' Excel.
    '=======================================================================
          cmd.CommandText = "INSERT INTO [EmployeeData$] IN 'C:\ExcelData1.xls' 'Excel 8.0;'" & _
             "SELECT EmployeeID AS ID, FirstName AS Name, BirthDate FROM Employees"
          cmd.ExecuteNonQuery()
    
    '==========================================================================
          ' Выполнение команды SELECT..INTO для базы данных «Борей»: вставка
          ' всех записей их таблицы или запроса в новый лист в книге 
          ' Excel.
    '==========================================================================
          cmd.CommandText = "SELECT * INTO [Excel 8.0;Database=C:\ExcelData2.xls].[ProductSales]" & _
                          "FROM [Product Sales for 1997]"
          cmd.ExecuteNonQuery()
    
          conn.Close()
    
    End Sub
  7. В случае необходимости измените путь к образцу базы данных «Борей» в переменной m_sNorthwind.

Проверка образца программы

  1. Выберите в меню View команду Other Windows, а затем — Output, чтобы отобразить окно Output.
  2. Чтобы построить и запустить программу, нажмите клавишу F5.
  3. Установите переключатель Create_Workbook и нажмите кнопку Go. С помощью команды CREATE TABLE в функции Create_Workbook будут созданы книги C:\ExcelData1.xls и C:\ExcelData2.xls. Книга ExcelData1.xls содержит лист (таблицу) EmployeeData, а книга ExcelData2.xls — лист (таблицу) InventoryData. Таблицы заполнены записями.

    ПРИМЕЧАНИЕ. После выполнения каждого описанного ниже действия открывайте книгу в Excel и проверяйте результаты. Кроме того, можно установить переключатель Retrieve_Records для просмотра содержимого таблиц в окне Output в среде Visual Studio .NET.
  4. Установите переключатель Retrieve_Records и нажмите кнопку Go. Записи будут извлечены из таблиц с помощью функции Retrieve_Records и отображены в окне Output.
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    
    InventoryData:
    ==============
    Cola           200   1,35
    Chips          550   0,89
  5. Установите переключатель Add_Records и нажмите кнопку Go. С помощью подпрограммы Add_Records в каждую таблицу будут добавлены по две записи.
    EmployeeData:
    =============
    AAA       Andrew         12/4/1955
    CCC       Charlie        10/14/1948
    DDD       Deloris        7/19/1998
    
    InventoryData:
    ==============
    Cola           200   1,35
    Chips          550   0,89
    Bread          390   1,89
    Milk           99    2,59
  6. Установите переключатель Update_Records и нажмите кнопку Go. С помощью функции Update_Records будут обновлены две записи в каждой книге.
    EmployeeData:
    =============
    AAA       Aaron          5/4/1975
    CCC       Charlie        10/14/1948
    DDD       Deloris        7/19/1998
    
    InventoryData:
    ==============
    Cola           1000   10,1
    Chips          2000   20,2
    Bread          390   1,89
    Milk           99    2,59
  7. Установите переключатель Update_Individual_Cells и нажмите кнопку Go. С помощью функции Update_Individual_Cells будут внесены изменения в ячейки F3, G3 и I4 на листе EmployeeData книги ExcelData1.xls.
  8. Установите переключатель Use_External_Source и нажмите кнопку Go. Команда INSERT..INTO в функции Use_External_Source служит для добавления записей из таблицы «Сотрудники» образца базы данных «Борей» на лист EmployeeData книги ExcelData1.xls. Команда SELECT..INTO используется в функции Use_External_Source для создания новой таблицы (или листа) в ExcelData2.xls, содержащей записи из таблицы «Товары» образца базы данных «Борей».

    ПРИМЕЧАНИЕ. В результате повторного использования функции Use_External_Source список «Сотрудники» будет добавлен снова, поскольку первичный ключ не распознается и не назначается.

Форматирование ячеек

Ячейки книги, в которой с помощью ADO.NET добавляются или изменяются записи, можно форматировать. После обновления существующей записи (или строки) форматирование ячеек сохраняется. Вставленная запись или строка наследует параметры форматирования от строки, которая расположена над ней.

Ниже рассмотрена процедура форматирования книги с помощью образца кода.
  1. Чтобы построить и запустить образец программы, нажмите клавишу F5.
  2. В форме Form1 установите переключатель Create_Workbook и нажмите кнопку Go.
  3. Запустите Microsoft Excel и откройте книгу C:\ExcelData1.xls.
  4. Установите для ячейки А2 полужирный шрифт.
  5. Установите для ячейки В2 курсив, подчеркивание и выравнивание по центру.
  6. Установите для ячейки С2 длинный формат даты.
  7. Сохраните и закройте файл C:\ExcelData1.xls.
  8. В форме Form1 установите переключатель Add_Records и нажмите кнопку Go.
  9. Откройте книгу C:\ExcelData1.xls и убедитесь, что новые строки унаследовали параметры форматирования от первой.

Ограничения

Ниже перечислены ограничения использования поставщика данных Jet OLE DB с базами данных в формате Excel.
  • С помощью ADO.NET нельзя вставлять формулы в ячейки
  • Поставщик данных Jet OLE DB не может предоставлять ключевые или индексные сведения для таблиц книги Excel. По этой причине нельзя использовать CommandBuilder для автоматического создания обновлений и добавлений для записей книги Excel.

Ссылки

Дополнительные сведения см. в следующих статьях базы знаний Майкрософт:
316756 PRB: при использовании OLEDbDataAdapter ADO.NET для изменения книги Excel происходит ошибка (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
257819 Как использовать ADO с данными Excel из Visual Basic или VBA (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
306022 Передача данных в книгу Excel с помощью Visual Basic .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
306023 Передача данных в книгу Excel с помощью Visual C# .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
311731 Запрос и отображение данных Excel с помощью ASP.NET, ADO.NET и Visual Basic .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
306572 Запрос и отображение данных Excel с помощью ASP.NET, ADO.NET и Visual C# .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
278973 Образец: Пример использования технологии ADO для чтения и записи данных в книге Excel (ExcelADO) (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 316934 - Последнее изменение :: 25 августа 2006 г. - Редакция: 7.1
Информация в данной статье относится к следующим продуктам.
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Ключевые слова: 
kbhowtomaster KB316934

Отправить отзыв