Способы передачи данных в книгу Excel с помощью Visual Basic.NET

Переводы статьи Переводы статьи
Код статьи: 306022 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для Microsoft Visual C#.NET версии данной статьи, см. 306023.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье описаны различные методы Передача данных в Microsoft Excel 2002 с помощью Visual Basic.NET программы. В данной статье также представлены преимущества и недостатки каждого метода, чтобы Выберите решение, которое лучше всего подходит для вашей ситуации.

Общие сведения

Методику, наиболее часто используется для передачи данных Рабочая книга Excel Автоматизация. С помощью автоматизации можно вызывать методы и свойства, которые являются конкретные задачи Excel. Обеспечивает максимальную гибкость для автоматизации Указание расположения данных в книге, а также возможность форматирования книги и создание различных параметров во время выполнения.

С помощью автоматизации, можно использовать несколько методов для передачи данных:
  • Передача данных по одной ячейке.
  • Передача данных в массив в диапазон ячеек.
  • Передача данных в набор записей ADO в диапазон ячеек с помощью CopyFromRecordset метод.
  • Создание QueryTable объект на листе Excel, который содержит результат запроса на источнике данных ODBC или OLEDB.
  • Передача данных в буфер обмена и вставить содержимое буфера обмена в лист Excel.
Также можно использовать несколько методов, которые не обязательно делать требуют автоматизации для передачи данных в Excel. Если выполняется на стороне сервера программы, это может быть хорошим решением для большого объема обработки данных от клиентов.

Можно использовать следующие подходы к Передача данных без автоматизации:
  • Передача данных в текстовый файл с разделителями табуляции или запятыми что Excel впоследствии может разобрать на ячейки на листе.
  • Передача данных с использованием ADO.NET.
  • Передача данных XML в Excel (только в версии 2002) для обеспечения данные форматируются и организованы в столбцы и строки.

Методы

Передача данных по одной ячейке с помощью автоматизации

Благодаря автоматизации позволяет передавать данные по одной ячейке листа время, как показано ниже.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object

        'Start a new workbook in Excel.
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Add data to cells of the first worksheet in the new workbook.
        oSheet = oBook.Worksheets(1)
        oSheet.Range("A1").Value = "Last Name"
        oSheet.Range("B1").Value = "First Name"
        oSheet.Range("A1:B1").Font.Bold = True
        oSheet.Range("A2").Value = "Doe"
        oSheet.Range("B2").Value = "John"

        'Save the Workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book1.xls")
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				
Передача данных по одной ячейке может быть приемлемым подход, если существует не объем передаваемых данных. Гибкость для помещения данных в любом месте книги и можно форматировать ячейки во время выполнения. Тем не менее это подход не рекомендуется, если имеется большое количество данных для передачи в Excel книги. Каждый Диапазон Объект, получаемый во время выполнения, вызывает интерфейс запрос. Таким образом этот способ передачи данных может быть медленным.
Кроме того, Microsoft Windows 95, Microsoft Windows 98 и Microsoft Windows Millennium Edition (Me) имеют определенные ограничения 64 КБ на запросы интерфейса. Если у вас есть 64 КБ или из интерфейса запрашивает, может остановить сервер автоматизации (Excel) отвечать, или появляются сообщения об ошибках, указывающие нехватки памяти. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
216400Автоматизация процессов COM можно разорвать клиентское приложение на Win95/98
Опять же передача данных по одной ячейке допустима только для небольших объемов данных. Если необходимо передавать большие объемы данных задает для Excel, Рекомендуется использовать один из подходов, описанных в данной статье для передачи данных в пакетном режиме.

Для получения дополнительных сведений и в качестве примера того, как для автоматизации Excel с помощью Visual Basic.NET, щелкните следующий номер статьи базы знаний Майкрософт:
301982Как для автоматизации приложения Microsoft Excel из Visual Basic.NET

Передача массива данных в диапазон на листе с помощью автоматизации

Можно передать массив данных диапазон ячеек листа в то же время, как показано ниже.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object

        'Start a new workbook in Excel.
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Create an array with 3 columns and 100 rows.
        Dim DataArray(99, 2) As Object
        Dim r As Integer
        For r = 0 To 99
            DataArray(r, 0) = "ORD" & Format(r + 1, "0000")
            DataArray(r, 1) = Rnd() * 1000
            DataArray(r, 2) = DataArray(r, 1) * 0.07
        Next

        'Add headers to the worksheet on row 1.
        oSheet = oBook.Worksheets(1)
        oSheet.Range("A1").Value = "Order ID"
        oSheet.Range("B1").Value = "Amount"
        oSheet.Range("C1").Value = "Tax"

        'Transfer the array to the worksheet starting at cell A2.
        oSheet.Range("A2").Resize(100, 3).Value = DataArray

        'Save the Workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book2.xls")
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				
Если передача данных с помощью массива, а не на одну ячейку, можно повысить производительность огромные прибыли с большим количеством данных. Рассмотрим следующий Строка из более ранних версий кода, который передает данные в 300 ячеек листа.
        oSheet.Range("A2").Resize(100, 3).Value = DataArray
				
Эта строка представляет два запроса интерфейса: один для Диапазон Объект, Диапазон Возвращает метод, а другой — для Диапазон Объект, Изменение размера Возвращает метод. В противоположность этому при передаче данных по одной ячейке требует запросов для интерфейсов-300 Диапазон объекты. По возможности, могут выиграть от передачи данные в массовых и уменьшение количества запросов к интерфейсу сделать.

Для передачи набора записей ADO в диапазон листа с помощью автоматизации

Предоставляют объектной модели Excel 2000 и Excel 2002 CopyFromRecordset метод передачи набора записей ADO в диапазон на лист. Следующий код иллюстрирует способ автоматизации приложения Microsoft Excel для передачи содержимое таблицы Orders в образце базы данных "Борей" с помощью CopyFromRecordset метод.
        'Create a Recordset from all the records in the Orders table.
        Dim sNWind As String
        Dim conn As New ADODB.Connection()
        Dim rs As ADODB.Recordset
        conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            sNorthwind & ";")
        conn.CursorLocation = ADODB.CursorLocationEnum.adUseClient
        rs = conn.Execute("Orders", , ADODB.CommandTypeEnum.adCmdTable)

        'Create a new workbook in Excel.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add
        oSheet = oBook.Worksheets(1)

        'Transfer the field names to Row 1 of the worksheet:
        'Note: CopyFromRecordset copies only the data and not the field
        '      names, so you can transfer the fieldnames by traversing the
        '      fields collection.
        Dim n As Int32
        For n = 1 To rs.Fields.Count
            oSheet.Cells(1, n).Value = rs.Fields(n - 1).Name
        Next

        'Transfer the data to Excel.
        oSheet.Range("A2").CopyFromRecordset(rs)

        'Save the workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book3.xls")
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()

        'Close the connection
        rs.Close()
        conn.Close()
				
Примечание CopyFromRecordset работает только с ADO Набор записей объекты. A Набор данных что можно создать с помощью ADO.NET не может использоваться с CopyFromRecordset метод. Демонстрируются несколько примеров в разделах способы передачи данных в Excel с помощью ADO.NET.

Создание объекта QueryTable на листе

A QueryTable объект представляет таблицу, которая строится на основе данных возвращается из внешнего источника данных. При автоматизации Excel можно создать в QueryTable путем предоставления строки соединения OLEDB или данных ODBC источник и строкой SQL. Excel создает набор записей и вставка набор записей на лист в указанном месте. С помощью QueryTable объектов дает следующие преимущества по сравнению с CopyFromRecordset метод:
  • Excel обрабатывает создание набора записей и его размещением на листе.
  • Можно сохранить запрос QueryTable так что он может быть обновлен позже для получения обновленного объекта набор записей.
  • При создании нового QueryTable добавлен на лист можно указать данные, уже существующие в ячейки листа сдвигаются в соответствии с новыми данными (см. RefreshStyle свойство).
Следующий код демонстрирует способ автоматизации приложения Microsoft Excel 2000 или 2002 для создания нового QueryTable в электронной таблице Excel, используя данные из данных Northwind База данных.
        'Create a new workbook in Excel.
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add
        oSheet = oBook.Worksheets(1)

        'Create the QueryTable object.
        Dim oQryTable As Object
        oQryTable = oSheet.QueryTables.Add( _
        "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            sNorthwind & ";", oSheet.Range("A1"), _
            "Select * from Orders")
        oQryTable.RefreshStyle = 2 ' xlInsertEntireRows = 2
        oQryTable.Refresh(False)

        'Save the workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book4.xls")
        oQryTable = Nothing
        oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
				

Использование буфера обмена

Можно использовать буфер обмена для передачи данных лист. Чтобы вставить данные в несколько ячеек на листе, можно скопировать Строка, в которой столбцы разделяются знаками табуляции, а строки – символами символом возврата каретки. Следующий код демонстрирует, как Visual Basic.NET использует буфер обмена для передачи данных в Excel.
        'Copy a string to the Clipboard.
        Dim sData As String
        sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _
            & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _
            & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"
        System.Windows.Forms.Clipboard.SetDataObject(sData)

        'Create a workbook in Excel.
        Dim oExcel As Object
        Dim oBook As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Paste the data.
        oBook.Worksheets(1).Range("A1").Select()
        oBook.Worksheets(1).Paste()

        'Save the workbook and quit Excel.
        oBook.SaveAs(sSampleFolder & "Book5.xls")
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				

Создайте файл с разделителями, который Excel может разобрать на строки и столбцы

Excel может открывать файлы с разделителями-знаками табуляции или файлов с разделителями запятыми и правильно анализируют данные в ячейки. Эту функцию можно использовать при переносе большого данные на лист при работе с минимальным, автоматизации. Это может быть Хороший подход для программы клиент сервер, так как текстовый файл может быть созданный на сервере. Затем можно открыть текстовый файл на клиентском компьютере, с помощью Автоматизация, когда он подходит.

Следующий код иллюстрирует как создать файл текст с разделителями табуляцией из данных, считанных с ADO.NET.
        'Connect to the data source.
        Dim objConn As New System.Data.OleDb.OleDbConnection( _
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sNorthwind & ";")
        objConn.Open()

        'Execute a command to retrieve all records from the Employees table.
        Dim objCmd As New System.Data.OleDb.OleDbCommand( _
            "Select * From Employees", objConn)
        Dim objReader As System.Data.OleDb.OleDbDataReader
        objReader = objCmd.ExecuteReader()

        'Read the records in the dataset and write select fields to the 
        'output file.
        FileOpen(1, sSampleFolder & "Book6.txt", OpenMode.Output)
        Dim i As Integer, s As String
        While objReader.Read()
            'Loop through first 6 fields and concatenate
            'each field, separated by a tab, into s variable.
            s = ""
            For i = 0 To 5
                If Not objReader.IsDBNull(i) Then
                    If i = 0 Then 'field 1 is EmployeeId
                        s = s & objReader.GetInt32(i).ToString
                    ElseIf i = 5 Then 'field 6 is BirthDate
                        s = s & objReader.GetDateTime(i)
                    Else 'field is a text field
                        s = s & objReader.GetString(i)
                    End If
                End If
                s = s & Microsoft.VisualBasic.ControlChars.Tab
            Next
            PrintLine(1, s)
        End While
        FileClose(1)

        'Close the reader and the connection.
        objReader.Close()
        objConn.Close()
				
Автоматизация не использовалась в предыдущем коде. Тем не менее можно использовать Минимальная автоматизации открыть текстовый файл и сохраните файл в Excel Формат книги, как показано ниже.
        'Create a new instance of Excel.
        Dim oExcel As Object
        oExcel = CreateObject("Excel.Application")

        'Open the text file and save it in the Excel workbook format.
        oExcel.Workbooks.OpenText(sSampleFolder & "Book6.txt", _
            , , , -4142, , True) 'xlTextQualifierNone=-4142

        oExcel.ActiveWorkbook.SaveAs(sSampleFolder & "Book6.xls", _
            -4143) 'xlWorkbookNormal = -4143

        'Quit Excel.
        oExcel.Quit()
        oExcel = Nothing
        GC.Collect()
				

Перенос данных на листе с помощью ADO.NET

Поставщик Microsoft Jet OLE DB можно использовать для добавления записей таблицу в книгу Excel. «Таблица» в программе Excel считается диапазон от ячейки; диапазон может иметь определенное имя. Как правило первая строка диапазона содержит заголовки (или имена полей), а позднее строк в диапазоне содержит записи.

Следующий код добавляет два новых записей в таблицу Таблица Book7.xls. в данном случае является Sheet1.
       'Establish a connection to the data source.
        Dim sConnectionString As String
        sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & sSampleFolder & _
            "Book7.xls;Extended Properties=Excel 8.0;"
        Dim objConn As New System.Data.OleDb.OleDbConnection(sConnectionString)
        objConn.Open()

        'Add two records to the table.
        Dim objCmd As New System.Data.OleDb.OleDbCommand()
        objCmd.Connection = objConn
        objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
            " values ('Bill', 'Brown')"
        objCmd.ExecuteNonQuery()
        objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
            " values ('Joe', 'Thomas')"
        objCmd.ExecuteNonQuery()

        'Close the connection.
        objConn.Close()
				
При добавлении записей с помощью ADO.NET, как показано форматирование книга сохраняется. Каждая запись, добавляемая в строку, форматируется из строк перед ней. Например новые поля, добавленные в столбце B выравниваются по правому краю, потому что ячейка B1 по правому краю.

Обратите внимание, что при добавлении записи в ячейку или ячейки листа, его перезаписывает любые данные, ранее содержавшиеся в эти ячейки. Другими словами строки в журнале не «рассылаются» при добавлении новых записей. Имейте это в против при разработке макета данных на листе при Вставка новых записей с помощью ADO.NET.

Для получения дополнительных сведений об использовании ADO.NET, щелкните следующие номера статей базы знаний Майкрософт:
301075Как подключиться к базе данных и выполнить команду с помощью ADO.NET и Visual Basic.NET
301216 Как заполнить объект DataSet из базы данных с помощью Visual Basic.NET
301248 Как обновить базы данных из объекта DataSet с помощью Visual Basic.NET
Для получения дополнительных сведений об использовании поставщика OLE DB для Jet с Источники данных Excel, щелкните следующий номер статьи базы знаний Майкрософт:
278973Пример использования технологии ADO для чтения и записи данных в книге Excel
257819 Использование ADO с данными Excel из Visual Basic или VBA

Передача XML-данных (только для Microsoft Excel 2002)

Excel 2002 можно открыть любой файл XML, который сформирован. XML-файлы можно открыть непосредственно из Открыть команды Файл меню, или программно с помощью Открыть -или- OpenXML методы Книги Коллекция. При создании XML-файлы для использования в Microsoft Excel можно также можно Создайте таблицы стилей для форматирования данных.

Для получения дополнительных сведений о способах использования XML с помощью Microsoft Excel 2002 щелкните следующие номера статей базы знаний Майкрософт:
307021Способы передачи данных XML в Microsoft Excel 2002 с помощью Visual Basic.NET
288215 Microsoft Excel 2002 и XML

Создание полного проекта Visual Basic.NET проект

  1. Создайте новую папку для хранения книг Excel, Пример создать для вас и затем назовите папку C:\Exceldata\.
  2. Чтобы создать новую книгу для данного примера, выполните следующие действия для записи:
    1. Откройте новую книгу в Microsoft Excel.
    2. На листе Лист1 новой книги введите «Имя» в ячейке A1 и Фамилияв ячейке A2.
    3. Сохраните в формате C:\Exceldata\Book7.xls.
  3. Запустите Visual Studio.NET. На Файл меню, нажмите кнопку Новый и выберите команду Проект. В группе Проекты Visual Basic, выберите Приложение Windows. По умолчанию будет создана форма Form1.
  4. Добавьте ссылку на библиотеку объектов Microsoft Excel. Чтобы сделать это, выполните следующие действия.
    1. На Проект меню, нажмите кнопку Добавить ссылку.
    2. На COM Вкладка, найдите Библиотека объектов Microsoft Excel 10.0, а затем нажмите кнопку Выберите.

      Примечание Если вы еще не рекомендуется, можно Загрузите и установите Microsoft Office XP первичных сборок взаимодействия (PIA). Для получения дополнительных сведений об основных сборок взаимодействия Office XP щелкните следующий номер статьи базы знаний Майкрософт:
      328912Microsoft Office XP основные сборки взаимодействия (PIA) доступны для загрузки
    3. На COM Вкладка, найдите Библиотека объектов 2.7 данных Microsoft ActiveX, а затем нажмите кнопку Выберите.
    4. Нажмите кнопку ОК В диалоговом окне Добавление ссылок диалоговое окно для подтверждения сделанного. Если появится запрос на Создание оберток для выбранных библиотек, нажмите кнопку Да.
  5. Добавить Поле со списком элемент управления и Кнопка элемент управления в форму Form1.
  6. Добавьте следующий код в форму Form1.
        Const sSampleFolder = "C:\ExcelData\"
        Const sNorthwind = "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
          Handles MyBase.Load
            ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
            Dim aList As String() = _
                {"Use Automation to Transfer Data Cell by Cell ", _
                 "Use Automation to Transfer an Array of Data to a Range on a Worksheet ", _
                 "Use Automation to Transfer an ADO Recordset to a Worksheet Range ", _
                 "Use Automation to Create a QueryTable on a Worksheet", _
                 "Use the Clipboard", _
                 "Create a Delimited Text File that Excel Can Parse into Rows and Columns", _
                 "Transfer Data to a Worksheet Using ADO.NET "}
            ComboBox1.Items.AddRange(aList)
            ComboBox1.SelectedIndex = 0
            Button1.Text = "Go!"
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
          Handles Button1.Click
            Select Case ComboBox1.SelectedIndex
                Case 0 : Automation_CellByCell()
                Case 1 : Automation_UseArray()
                Case 2 : Automation_ADORecordset()
                Case 3 : Automation_QueryTable()
                Case 4 : Use_Clipboard()
                Case 5 : Create_TextFile()
                Case 6 : Use_ADONET()
            End Select
            GC.Collect()
        End Sub
    
        Private Function Automation_CellByCell()
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
    
            'Start a new workbook in Excel.
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
    
            'Add data to cells of the first worksheet in the new workbook.
            oSheet = oBook.Worksheets(1)
            oSheet.Range("A1").Value = "Last Name"
            oSheet.Range("B1").Value = "First Name"
            oSheet.Range("A1:B1").Font.Bold = True
            oSheet.Range("A2").Value = "Doe"
            oSheet.Range("B2").Value = "John"
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book1.xls")
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Automation_UseArray()
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
    
            'Start a new workbook in Excel.
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
    
            'Create an array with 3 columns and 100 rows.
            Dim DataArray(99, 2) As Object
            Dim r As Integer
            For r = 0 To 99
                DataArray(r, 0) = "ORD" & Format(r + 1, "0000")
                DataArray(r, 1) = Rnd() * 1000
                DataArray(r, 2) = DataArray(r, 1) * 0.07
            Next
    
            'Add headers to the worksheet on row 1.
            oSheet = oBook.Worksheets(1)
            oSheet.Range("A1").Value = "Order ID"
            oSheet.Range("B1").Value = "Amount"
            oSheet.Range("C1").Value = "Tax"
    
            'Transfer the array to the worksheet starting at cell A2.
            oSheet.Range("A2").Resize(100, 3).Value = DataArray
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book2.xls")
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Automation_ADORecordset()
            'Create a Recordset from all the records in the Orders table.
            Dim sNWind As String
            Dim conn As New ADODB.Connection()
            Dim rs As ADODB.Recordset
            conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                sNorthwind & ";")
            conn.CursorLocation = ADODB.CursorLocationEnum.adUseClient
            rs = conn.Execute("Orders", , ADODB.CommandTypeEnum.adCmdTable)
    
            'Create a new workbook in Excel.
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
            oSheet = oBook.Worksheets(1)
    
            'Transfer the field names to Row 1 of the worksheet:
            'Note: CopyFromRecordset copies only the data and not the field
            '      names, so you can transfer the fieldnames by traversing the
            '      fields collection.
            Dim n As Int32
            For n = 1 To rs.Fields.Count
                oSheet.Cells(1, n).Value = rs.Fields(n - 1).Name
            Next
    
            'Transfer the data to Excel.
            oSheet.Range("A2").CopyFromRecordset(rs)
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book3.xls")
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
    
            'Close the connection.
            rs.Close()
            conn.Close()
        End Function
    
        Private Function Automation_QueryTable()
            'Create a new workbook in Excel.
            Dim oExcel As Object
            Dim oBook As Object
            Dim oSheet As Object
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
            oSheet = oBook.Worksheets(1)
    
            'Create the QueryTable object.
            Dim oQryTable As Object
            oQryTable = oSheet.QueryTables.Add( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                sNorthwind & ";", oSheet.Range("A1"), _
                "Select * from Orders")
            oQryTable.RefreshStyle = 2 ' xlInsertEntireRows = 2
            oQryTable.Refresh(False)
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book4.xls")
            oQryTable = Nothing
            oSheet = Nothing
            oBook = Nothing
            oExcel.Quit()
    
    
            oExcel = Nothing
    
        End Function
    
        Private Function Use_Clipboard()
            'Copy a string to the clipboard.
            Dim sData As String
            sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _
                & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _
                & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"
            System.Windows.Forms.Clipboard.SetDataObject(sData)
    
            'Create a new workbook in Excel.
            Dim oExcel As Object
            Dim oBook As Object
            oExcel = CreateObject("Excel.Application")
            oBook = oExcel.Workbooks.Add
    
            'Paste the data.
            oBook.Worksheets(1).Range("A1").Select()
            oBook.Worksheets(1).Paste()
    
            'Save the workbook and quit Excel.
            oBook.SaveAs(sSampleFolder & "Book5.xls")
            oBook = Nothing
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Create_TextFile()
            'Connect to the data source.
            Dim objConn As New System.Data.OleDb.OleDbConnection( _
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sNorthwind & ";")
            objConn.Open()
    
            'Run a command to retrieve all records from the Employees table.
            Dim objCmd As New System.Data.OleDb.OleDbCommand( _
                "Select * From Employees", objConn)
            Dim objReader As System.Data.OleDb.OleDbDataReader
            objReader = objCmd.ExecuteReader()
    
            'Read the records in the dataset and write select fields to the 
            'output file.
            FileOpen(1, sSampleFolder & "Book6.txt", OpenMode.Output)
            Dim i As Integer, s As String
            While objReader.Read()
                'Loop through first 6 fields and concatenate
                'each field, separated by a tab, into s variable.
                s = ""
                For i = 0 To 5
                    If Not objReader.IsDBNull(i) Then
                        If i = 0 Then 'field 1 is EmployeeId
                            s = s & objReader.GetInt32(i).ToString
                        ElseIf i = 5 Then 'field 6 is BirthDate
                            s = s & objReader.GetDateTime(i)
                        Else 'field is a text field
                            s = s & objReader.GetString(i)
                        End If
                    End If
                    s = s & Microsoft.VisualBasic.ControlChars.Tab
                Next
                PrintLine(1, s)
            End While
            FileClose(1)
    
            'Close the reader and the connection.
            objReader.Close()
            objConn.Close()
    
            'Create a new instance of Excel.
            Dim oExcel As Object
            oExcel = CreateObject("Excel.Application")
    
            'Open the text file and save it in the Excel workbook format.
            oExcel.Workbooks.OpenText(sSampleFolder & "Book6.txt", _
                , , , -4142, , True) 'xlTextQualifierNone=-4142
    
            oExcel.ActiveWorkbook.SaveAs(sSampleFolder & "Book6.xls", _
                -4143) 'xlWorkbookNormal = -4143
    
            'Quit Excel.
            oExcel.Quit()
            oExcel = Nothing
            GC.Collect()
        End Function
    
        Private Function Use_ADONET()
    
            'Verify that the workbook to write to does exist.
            Dim sFile As String = sSampleFolder & "Book7.xls"
            If Dir(sFile) = "" Then
                MsgBox("Please create the workbook Book7.xls and try again.")
                Exit Function
            End If
    
            'Establish a connection to the data source.
            Dim sConnectionString As String
            sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & sSampleFolder & _
                "Book7.xls;Extended Properties=Excel 8.0;"
            Dim objConn As New System.Data.OleDb.OleDbConnection(sConnectionString)
            objConn.Open()
    
            'Add two records to the table named 'MyTable'.
            Dim objCmd As New System.Data.OleDb.OleDbCommand()
            objCmd.Connection = objConn
            objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
                " values ('Bill', 'Brown')"
            objCmd.ExecuteNonQuery()
            objCmd.CommandText = "Insert into [Sheet1$] (FirstName, LastName)" & _
                " values ('Joe', 'Thomas')"
            objCmd.ExecuteNonQuery()
    
            'Close the connection.
            objConn.Close()
        End Function
    					
    Примечание Если не установлен Microsoft Office в папку по умолчанию (C:\Program Files\Microsoft Office), изменение sNorthwind константы в образце кода в соответствии с пути установки для Northwind.mdb.

  7. Добавьте следующий код в верхнюю часть файла Form1.vb.
    Imports Microsoft.Office.Interop
    					
  8. Нажмите клавишу F5 для построения и запуска образца.

Ссылки

Для получения дополнительных сведений посетите следующие разработки корпорации Майкрософт Веб-узел сети MSDN:
http://msdn2.Microsoft.com/en-us/library/aa188489 (office.10) .aspx
Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
247412Методы для передачи данных в Microsoft Excel из Visual Basic

Свойства

Код статьи: 306022 - Последний отзыв: 6 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Ключевые слова: 
kbautomation kbhowtomaster kbmt KB306022 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:306022

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

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com