Back to Devexpress

How to: Load a Document to a Workbook

officefileapi-12075-spreadsheet-document-api-examples-workbooks-how-to-load-a-document-to-a-workbook.md

latest6.7 KB
Original Source

How to: Load a Document to a Workbook

  • Sep 19, 2023
  • 3 minutes to read

Important

The Workbook class is defined in the DevExpress.Docs.v25.2.dll assembly. Add this assembly to your project to use the Workbook API. You need a license for the DevExpress Office File API Subscription or DevExpress Universal Subscription to use this assembly in production code.

Use the Workbook.LoadDocument method to load an existing spreadsheet document into a Workbook instance. A DocumentFormat enumeration member defines the document format.

Load from a File

csharp
// Add a reference to the DevExpress.Docs.dll assembly.
using DevExpress.Spreadsheet;
// ...

Workbook workbook = new Workbook();

// Load a workbook from the file.
workbook.LoadDocument("Documents\\Document.xlsx", DocumentFormat.Xlsx);
vb
' Add a reference to the DevExpress.Docs.dll assembly. 
Imports DevExpress.Spreadsheet
' ...

Dim workbook As New Workbook()

' Load a workbook from the file.
workbook.LoadDocument("Documents\Document.xlsx", DocumentFormat.Xlsx)

Load from a Stream

csharp
// Add a reference to the DevExpress.Docs.dll assembly. 
using DevExpress.Spreadsheet;
using System.IO;
// ...

Workbook workbook = new Workbook();

// Load a workbook from the stream.
using (FileStream stream = new FileStream("Documents\\Document.xlsx", FileMode.Open))
{
    workbook.LoadDocument(stream, DocumentFormat.Xlsx);
}
vb
' Add a reference to the DevExpress.Docs.dll assembly.
Imports DevExpress.Spreadsheet
Imports System.IO
' ...

Dim workbook As New Workbook()

' Load a workbook from the stream.
Using stream As New FileStream("Documents\Document.xlsx", FileMode.Open)
    workbook.LoadDocument(stream, DocumentFormat.Xlsx)
End Using

Asynchronous Load

Use the Workbook.LoadDocumentAsync method to asynchronously load a workbook from a file, stream, or byte array.

Important

Take into account the following when you call this method:

  • The events fired by this method call may occur in a different thread than the target operation.

  • The operation is not thread safe (the document should not be accessed simultaneously by different threads). Wait until the operation is completed before you continue to work with the document (for example, use the await operator).

The following code sample shows how to merge two workbooks and save the result asynchronously.

csharp
private async void MergeWorkbooks()
{
  using (Workbook workbook1 = new Workbook())
  using (Workbook workbook2 = new Workbook())
  {
      await Task.WhenAll(new Task[]
      {
          workbook1.LoadDocumentAsync("book1.xlsx"),
          workbook2.LoadDocumentAsync("book2.xlsx")
      });
      workbook1.Append(workbook2);
      await workbook1.SaveDocumentAsync("merged.xlsx");
  }
}
vb
Private Async Sub MergeWorkbooks()
    Using workbook1 As Workbook = New Workbook()

        Using workbook2 As Workbook = New Workbook()
            Await Task.WhenAll(New Task() {workbook1.LoadDocumentAsync("book1.xlsx"), workbook2.LoadDocumentAsync("book2.xlsx")})
            workbook1.Append(workbook2)
            Await workbook1.SaveDocumentAsync("merged.xlsx")
        End Using
    End Using
End Sub

Calculate Formulas in the Loaded Document

The default calculation mode for a Workbook is Manual. This mode implies that the Spreadsheet component does not recalculate formulas when you load a document. Call the Workbook.Calculate or Workbook.CalculateFull method to recalculate all formulas in the workbook.

csharp
using (Workbook workbook = new Workbook())
{
    // Load a document.
    workbook.LoadDocument("Document.xlsx", DocumentFormat.Xlsx);
    // Calculate formulas in the document.
    workbook.Calculate();
    // ...
}
vb
Using workbook As New Workbook()
    ' Load a document.
    workbook.LoadDocument("Document.xlsx", DocumentFormat.Xlsx)
    ' Calculate formulas in the document.
    workbook.Calculate()
    ' ...
End Using

Change Calculation Mode

Use the Workbook.Options.CalculationMode property to specify when to calculate formulas in a Workbook.

The following calculation modes are available:

  • Manual (default) - Formulas are calculated only on demand (after the Calculate method call). It allows you to improve document generation speed for large workbooks with multiple formulas.

  • UseDocumentSettings - Uses the calculation mode specified in the loaded document (this value is stored in the Workbook.DocumentSettings.Calculation.Mode property).

  • Automatic - Recalculates formulas each time a cell value, formula, or defined name changes.

  • C#

  • VB.NET

csharp
using (Workbook workbook = new Workbook())
{
    // Change the calculation mode.
    workbook.Options.CalculationMode = WorkbookCalculationMode.UseDocumentSettings;
    // ...
    // Load a document.
    // ...
}
vb
Using workbook As New Workbook()
  ' Change the calculation mode.
  workbook.Options.CalculationMode = WorkbookCalculationMode.UseDocumentSettings
  ' ...
  ' Load a document.
  ' ...
End Using

See Also

Supported Spreadsheet Formats

How to: Save a Document to a File