如何:向服务器上的工作簿中插入数据

不用运行 Excel,就可以将数据插入属于文档级 Office 项目的 Microsoft Office Excel 工作簿的缓存。 这样就可以将数据插入存储在服务器上的 Excel 工作簿中。

**适用于:**本主题中的信息适用于 Excel 2007 和 Excel 2010 的文档级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

用于插入数据的代码必须位于与所处理的文档相关联的项目程序集之外,例如位于控制台应用程序或 Windows 窗体应用程序中。

有关如何使用本主题中的代码示例的分步说明,请参见演练:将数据插入到服务器上的工作簿中

示例

下面的代码示例首先会创建类型化数据集 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 文档级自定义项一部分。 工作簿具有一个名为 AdventureWorksLTDataSet 的已缓存数据集,其中包含某些数据。

有关如何使用此代码的分步说明,请参见演练:将数据插入到服务器上的工作簿中

请参见

任务

演练:将数据插入到服务器上的工作簿中

如何:将数据插入文档而不写入磁盘

如何:从服务器上的工作簿中检索缓存的数据

如何:更改服务器上的工作簿中的缓存数据

概念

访问服务器上的文档数据

DiffGram (ADO.NET)