Поделиться через


Практическое руководство. Вставка данных в книгу на сервере

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Тип проекта

  • Проекты уровня документа

Версия Microsoft Office

  • Excel 2007

  • Excel 2003

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Данные можно вносить в кэш книги Microsoft Office Excel, входящей в состав проекта Visual Studio Tools for Office уровня документа, не запуская приложение Excel. Это позволяет вставлять данные в книги Excel, которые хранятся на сервере.

Код для вставки данных должен находится вне основной сборки проекта Visual Studio Tools for Office, связанной с используемым документом, например в консольном приложении или в приложении Windows Forms.

Пошаговые инструкции по использованию примера кода из этого раздела см. в разделе Пошаговое руководство. Вставка данных в книгу на сервере.

Пример

В следующем примере кода сначала создается экземпляр типизированного набора данных с именем AdventureWorksLTDataSet, а затем заполняется таблица Product в этом наборе данных с помощью адаптера таблицы. Затем код с помощью класса ServerDocument вызывает экземпляр того же типизированного набора данных, кэшированный в книге Excel, и записывает данные из локального набора данных в кэшированный с помощью метода SerializeDataInstance.

Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet()
Dim productTableAdapter As _
    New AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter()

Dim workbookPath As String = System.Environment.GetFolderPath( _
    Environment.SpecialFolder.MyDocuments) & _
    "\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"
Dim serverDocument1 As ServerDocument = Nothing

Try
    productTableAdapter.Fill(productDataSet.Product)
    Console.WriteLine("The local dataset is filled.")

    serverDocument1 = New ServerDocument(workbookPath)
    Dim dataHostItem1 As CachedDataHostItem = _
        serverDocument1.CachedData.HostItems("AdventureWorksReport.Sheet1")
    Dim dataItem1 As CachedDataItem = dataHostItem1.CachedData("AdventureWorksLTDataSet")

    ' Initialize the worksheet dataset with the local dataset.
    If dataItem1 IsNot Nothing Then
        dataItem1.SerializeDataInstance(productDataSet)
        serverDocument1.Save()
        Console.WriteLine("The data is saved to the data cache.")
    Else
        Console.WriteLine("The data object is not found in the data cache.")
    End If
Catch ex As System.Data.SqlClient.SqlException
    Console.WriteLine(ex.Message)
Catch ex As System.IO.FileNotFoundException
    Console.WriteLine("The specified workbook does not exist.")
Finally
    If Not (serverDocument1 Is Nothing) Then
        serverDocument1.Close()
    End If
    Console.WriteLine(vbLf & vbLf & "Press Enter to close the application.")
    Console.ReadLine()
End Try
AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet = 
    new AdventureWorksDataSet.AdventureWorksLTDataSet();
AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter productTableAdapter =
    new AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter();

string workbookPath = System.Environment.GetFolderPath(
    Environment.SpecialFolder.MyDocuments) +
    @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx";
ServerDocument serverDocument1 = null;

try
{
    productTableAdapter.Fill(productDataSet.Product);
    Console.WriteLine("The local dataset is filled.");

    serverDocument1 = new ServerDocument(workbookPath);
    CachedDataHostItem dataHostItem1 =
        serverDocument1.CachedData.HostItems["AdventureWorksReport.Sheet1"];
    CachedDataItem dataItem1 = dataHostItem1.CachedData["adventureWorksLTDataSet"];

    // Initialize the worksheet dataset with the local dataset.
    if (dataItem1 != null)
    {
        dataItem1.SerializeDataInstance(productDataSet);
        serverDocument1.Save();
        Console.WriteLine("The data is saved to the data cache.");
        Console.ReadLine();
    }
    else
    {
        Console.WriteLine("The data object is not found in the data cache.");
    }
}
catch (System.Data.SqlClient.SqlException ex)
{
    Console.WriteLine(ex.Message);
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("The specified workbook does not exist.");
}
finally
{
    if (serverDocument1 != null)
    {
        serverDocument1.Close();
    }

    Console.WriteLine("\n\nPress Enter to close the application.");
    Console.ReadLine();
}

Компиляция кода

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

См. также

Задачи

Пошаговое руководство. Вставка данных в книгу на сервере

Практическое руководство. Вставка данных в документы без записи на диск

Практическое руководство. Извлечение кэшированных данных из рабочей книги на сервере

Практическое руководство. Изменение кэшированных данных в книге на сервере

Основные понятия

Доступ к данным в документах на сервере

Объекты DiffGram (ADO.NET)