Практическое руководство. Извлечение кэшированных данных из рабочей книги на сервере
Обновлен: Ноябрь 2007
Применение |
---|
Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Можно извлечь данные из кэша книги Microsoft Office Excel, входящей в состав проекта уровня документа Visual Studio Tools for Office, не запуская приложение Excel. Это позволяет получить данные в книги Excel, которые хранятся на сервере.
Код для извлечения данных должен находится вне основной сборки проекта Visual Studio Tools for Office, связанной с используемым документом, например, на веб-странице ASP.NET, в консольном приложении или в приложении Windows Forms.
Пошаговые инструкции по использованию примера кода из этого раздела см. в разделе Пошаговое руководство. Получение кэшированных данных из книги на сервере.
Пример
В следующем примере кода создается экземпляр типизированного набора данных с именем AdventureWorksLTDataSet. Далее код использует свойство CachedData класса ServerDocument для доступа к заполненному экземпляру того же типизированного набора данных, который уже кэширован в книге Excel, а затем считывает данные из кэшированного набора данных в локальном наборе данных.
Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet()
Dim workbookPath As String = System.Environment.GetFolderPath( _
Environment.SpecialFolder.MyDocuments) & _
"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"
Dim serverDocument1 As ServerDocument = Nothing
Try
serverDocument1 = New ServerDocument(workbookPath)
Dim dataHostItem1 As CachedDataHostItem = _
serverDocument1.CachedData.HostItems("AdventureWorksReport.Sheet1")
Dim dataItem1 As CachedDataItem = dataHostItem1.CachedData("AdventureWorksLTDataSet")
If dataItem1 IsNot Nothing Then
Console.WriteLine("Before reading data from the cache dataset, the local dataset has " & _
"{0} rows.", productDataSet.Product.Rows.Count.ToString())
' Read the cached data from the worksheet dataset into the local dataset.
Dim schemaReader As New System.IO.StringReader(dataItem1.Schema)
Dim xmlReader As New System.IO.StringReader(dataItem1.Xml)
productDataSet.ReadXmlSchema(schemaReader)
productDataSet.ReadXml(xmlReader)
Console.WriteLine("After reading data from the cache dataset, the local dataset has " & _
"{0} rows.", productDataSet.Product.Rows.Count.ToString())
Else
Console.WriteLine("The data object is not found in the data cache.")
End If
Catch ex As System.IO.FileNotFoundException
Console.WriteLine("The specified workbook does not exist.")
Catch ex As System.Xml.XmlException
Console.WriteLine("The data object has invalid XML information.")
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();
string workbookPath = System.Environment.GetFolderPath(
Environment.SpecialFolder.MyDocuments) +
@"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx";
ServerDocument serverDocument1 = null;
try
{
serverDocument1 = new ServerDocument(workbookPath);
CachedDataHostItem dataHostItem1 =
serverDocument1.CachedData.HostItems["AdventureWorksReport.Sheet1"];
CachedDataItem dataItem1 = dataHostItem1.CachedData["adventureWorksLTDataSet"];
if (dataItem1 != null)
{
Console.WriteLine("Before reading data from the cache dataset, the local dataset has " +
"{0} rows.", productDataSet.Product.Rows.Count.ToString());
// Read the cached data from the worksheet dataset into the local dataset.
System.IO.StringReader schemaReader = new System.IO.StringReader(dataItem1.Schema);
System.IO.StringReader xmlReader = new System.IO.StringReader(dataItem1.Xml);
productDataSet.ReadXmlSchema(schemaReader);
productDataSet.ReadXml(xmlReader);
Console.WriteLine("After reading data from the cache dataset, the local dataset has " +
"{0} rows.", productDataSet.Product.Rows.Count.ToString());
}
else
{
Console.WriteLine("The data object is not found in the data cache.");
}
}
catch (System.IO.FileNotFoundException)
{
Console.WriteLine("The specified workbook does not exist.");
}
catch (System.Xml.XmlException)
{
Console.WriteLine("The data object has invalid XML information.");
}
finally
{
if (serverDocument1 != null)
{
serverDocument1.Close();
}
Console.WriteLine("\n\nPress Enter to close the application.");
Console.ReadLine();
}
Компиляция кода
Пример кода в данном разделе предназначен для использования со следующими приложениями:
Консольное приложение, имеющее доступ к проекту библиотеки классов, определяющих типизированных набор данных. Данный код выполняется в консольном приложении.
Книга Excel, которая является частью настройки на уровне документа для Excel 2003 или Excel 2007, содержит кэшированный набор данных с именем AdventureWorksLTDataSet, в котором находятся данные.
Пошаговые инструкции по использованию примера кода из этого раздела см. в разделе Пошаговое руководство. Получение кэшированных данных из книги на сервере.
См. также
Задачи
Пошаговое руководство. Получение кэшированных данных из книги на сервере
Практическое руководство. Изменение кэшированных данных в книге на сервере