---
id: object/table/370
type: object
title: Table 370 "Excel Buffer"
summary: Table 370 "Excel Buffer" in Base Application (System.IO). 17 fields, 61 public procedures, 11 events. Present since at least BC23, still in BC30, changed in BC24.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "24"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 09618b9d3e37b3dc13209c1c79d1a4b3685b6a6d03fdcb65b253393c46e91e4b
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/DataExchange/ExcelBuffer.Table.al
    title: src/Layers/W1/BaseApp/System/DataExchange/ExcelBuffer.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations:
    - localization/ru
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 370
name: Excel Buffer
namespace: System.IO
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
source_major: "29"
obsolete: null
countries:
  - ru
ms_search_form_ids: []
counts:
  fields: 17
  procedures: 79
  events: 11
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 7
  called_by: 0
  implements: 0
---

# Table 370 "Excel Buffer"

> Table 370 "Excel Buffer" in Base Application (System.IO). 17 fields, 61 public procedures, 11 events. Present since at least BC23, still in BC30, changed in BC24.

Base Application · System.IO · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/DataExchange/ExcelBuffer.Table.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Excel Buffer |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | Row No. | Integer | — | DataClassification SystemMetadata |
| 2 | xlRowID | Text[10] | — | DataClassification SystemMetadata |
| 3 | Column No. | Integer | — | DataClassification SystemMetadata |
| 4 | xlColID | Text[10] | — | DataClassification SystemMetadata |
| 5 | Cell Value as Text | Text[250] | — | DataClassification SystemMetadata |
| 6 | Comment | Text[250] | — | DataClassification SystemMetadata |
| 7 | Formula | Text[250] | — | DataClassification SystemMetadata |
| 8 | Bold | Boolean | — | DataClassification SystemMetadata |
| 9 | Italic | Boolean | — | DataClassification SystemMetadata |
| 10 | Underline | Boolean | — | DataClassification SystemMetadata |
| 11 | NumberFormat | Text[30] | — | DataClassification SystemMetadata |
| 12 | Formula2 | Text[250] | — | DataClassification SystemMetadata |
| 13 | Formula3 | Text[250] | — | DataClassification SystemMetadata |
| 14 | Formula4 | Text[250] | — | DataClassification SystemMetadata |
| 15 | Cell Type | Option | — | OptionCaption: Number,Text,Date,Time; DataClassification SystemMetadata |
| 16 | Double Underline | Boolean | — | DataClassification SystemMetadata |
| 17 | Cell Value as Blob | Blob | — | DataClassification SystemMetadata |

## Keys

- Key1: Row No., Column No. (clustered)

## Events published

- `OnAfterAddColumnToBuffer(var ExcelBuffer: Record "Excel Buffer"; Value: Variant; IsFormula: Boolean; CommentText: Text; IsBold: Boolean; IsItalics: Boolean; IsUnderline: Boolean; NumFormat: Text[30]; CellType: Option)` (integration)
- `OnBeforeOpenUsingDocumentService(FileNameServer: Text; FileName: Text; var Result: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeParseCellValue(var ExcelBuffer: Record "Excel Buffer"; var Value: Text; var FormatString: Text; var IsHandled: Boolean)` (integration)
- `OnBeforeUTgetGlobalValue(GlobalVariable: Text[30]; var Variant_Value: Variant; var IsHandled: Boolean)` (integration)
- `OnBeforeWriteCellFormula(var Rec: Record "Excel Buffer"; var ExcelBuffer: Record "Excel Buffer"; var IsHandled: Boolean)` (integration)
- `OnParseCellValueOnBeforeRoundDecimal(var ExcelBuffer: Record "Excel Buffer"; DecimalValue: Decimal; var RoundingPrecision: Decimal)` (integration)
- `OnUpdateBookExcelOnAfterXlWrkBkWriterOpen(var ExcelBuffer: Record "Excel Buffer"; FileName: Text; SheetName: Text)` (integration)
- `OnWriteSheetOnBeforeUseXmlTextWriter(var ExcelBuffer: Record "Excel Buffer"; var IsHandled: Boolean)` (integration)
- `OnWriteSheetOnBeforeAddAndInitializeCommentsPart(var ExcelBuffer: Record "Excel Buffer"; var IsHandled: Boolean)` (integration)
- `OnWriteCellValueOnBeforeSetCellValue(var ExcelBuffer: Record "Excel Buffer"; var CellTextValue: Text)` (integration)
- `OnBeforeUpdateProgressDialog(var ExcelBufferDialogManagement: Codeunit "Excel Buffer Dialog Management"; var Result: Boolean; var IsHandled: Boolean)` (integration)

## Procedures

- `SetReadDateTimeInUtcDate(NewValue: Boolean)`
- `CopySheet(SheetName: Text; ClonedSheetName: Text; ReferenceSheetName: Text; PasteBefore: Boolean)`
- `DeleteWorksheet(SheetName: Text)`
- `GetSheetsCount(): Integer`
- `EnterCellByCellName(CellName: Text; CellValueAsText: Text[250])`
- `SetActiveWriterSheet(SheetName: Text)`
- `GetWriterSheetNameByNumber(SheetNo: Integer): Text`
- `CreateNewBook(SheetName: Text[250])`
- `CreateBook(FileName: Text; SheetName: Text)`
- `GetValueByCellName(CellName: Text): Text`
- `GetNextColumnCellName(CellName: Text[30]): Text`
- `GetNextRowCellName(CellName: Text[30]): Text`
- `OpenBook(FileName: Text; SheetName: Text)`
- `OpenBookStream(FileStream: InStream; SheetName: Text): Text`
- `OpenBookForUpdate(FileName: Text)`
- `UpdateBook(FileName: Text; SheetName: Text)`
- `UpdateBookExcel(FileName: Text; SheetName: Text; PreserveDataOnUpdate: Boolean)`
- `UpdateBookStream(var ExcelStream: InStream; SheetName: Text; PreserveDataOnUpdate: Boolean)`
- `CloseBook()`
- `SelectOrAddSheet(NewSheetName: Text)`
- `SetActiveReaderSheet(NewSheetName: Text)`
- `WriteSheet(ReportHeader: Text; CompanyName2: Text; UserID2: Text)`
- `WriteAllToCurrentSheet(var ExcelBuffer: Record "Excel Buffer")`
- `WriteCellValue(ExcelBuffer: Record "Excel Buffer")`
- `WriteCellFormula(ExcelBuffer: Record "Excel Buffer")`
- `SetColumnWidth(ColName: Text[10]; NewColWidth: Decimal)`
- `CreateRangeName(RangeName: Text[30]; FromColumnNo: Integer; FromRowNo: Integer)`
- `ReadSheet()`
- `ReadSheetContinous(SheetName: Text; CloseBookOnCompletion: Boolean)`
- `ReadSheetContinous(SheetName: Text; CloseBookOnCompletion: Boolean; ColumnList: List of [Integer]; RowList: List of [Integer]; MaxRowNo: Integer)`
- `ParseCellValue(Value: Text; FormatString: Text)` (protected)
- `SelectSheetsName(FileName: Text): Text[250]`
- `SelectSheetsNameStream(FileStream: InStream): Text[250]`
- `GetExcelReference(Which: Integer): Text[250]`
- `ExportBudgetFilterToFormula(var ExcelBuf: Record "Excel Buffer"): Boolean`
- `AddToFormula(Text: Text[30]): Boolean`
- `GetFormula(): Text[1000]`
- `SetFormula(LongFormula: Text[1000])`
- `ClearFormula()`
- `NewRow()`
- `AddColumn(Value: Variant; IsFormula: Boolean; CommentText: Text; IsBold: Boolean; IsItalics: Boolean; IsUnderline: Boolean; NumFormat: Text[30]; CellType: Option)`
- `AddInfoColumn(Value: Variant; IsFormula: Boolean; IsBold: Boolean; IsItalics: Boolean; IsUnderline: Boolean; NumFormat: Text[30]; CellType: Option)`
- `EnterCell(var ExcelBuffer: Record "Excel Buffer"; RowNo: Integer; ColumnNo: Integer; Value: Variant; IsBold: Boolean; IsItalics: Boolean; IsUnderline: Boolean)`
- `StartRange()`
- `EndRange()`
- `CreateRange(RangeName: Text[250])`
- `ClearNewRow()`
- `SetUseInfoSheet()`
- `UTgetGlobalValue(globalVariable: Text[30]; var value: Variant)`
- `SetCurrent(NewCurrentRow: Integer; NewCurrentCol: Integer)`
- `CreateValidationRule(Range: Code[20])`
- `CreateValidationRule(Range: Code[20]; SheetName: Text[250])`
- `QuitExcel()`
- `OpenExcel()`
- `DownloadAndOpenExcel()`
- `OpenExcelWithName(FileName: Text)`
- `CreateBookAndOpenExcel(FileName: Text; SheetName: Text[250]; ReportHeader: Text; CompanyName2: Text; UserID2: Text)`
- `SetFriendlyFilename(Name: Text)`
- `ConvertDateTimeDecimalToDateTime(DateTimeAsOADate: Decimal): DateTime`
- `SaveToStream(var ResultStream: OutStream; EraseFileAfterCompletion: Boolean)`
- `GetSheetsNameListFromStream(FileStream: InStream; var TempNameValueBufferOut: Record "Name/Value Buffer" temporary): Boolean`

Plus 7 local procedures.

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 419 "File Management"](../codeunit/419.md) (13 calls: `CreateBook → IsAllowedPath`, `CreateBook → ServerTempFileName`, `GetFriendlyFilename → StripNotsupportChrInFileName`, …)
- [Codeunit 6223 "OpenXML Management"](../codeunit/6223.md) (5 calls: `CreateBook → SetupWorksheetHelper`, `UpdateBookExcel → SetupWorksheetHelper`, `WriteCellValueInternal → CreateCommentVmlShapeXml`, …)
- [Codeunit 9510 "Document Service Management"](../codeunit/9510.md) (4 calls: `OpenUsingDocumentService → IsConfigured`, `OpenUsingDocumentService → IsServiceUri`, `OpenUsingDocumentService → OpenDocument`, …)
- [Codeunit 5370 "Excel Buffer Dialog Management"](../codeunit/5370.md) (3 calls: `UpdateProgressDialog → SetProgress`, `WriteAllToCurrentSheet → Close`, `WriteAllToCurrentSheet → Open`)
- [Codeunit 4100 "Temp Blob"](../codeunit/4100.md) (2 calls: `SaveToStream → CreateInStream`, `SelectSheetsName → CreateInStream`)
- [Codeunit 10 "Type Helper"](../codeunit/10.md) (1 call: `WriteSheet → LFSeparator`)
- [Page 823 "Name/Value Lookup"](../page/823.md) (1 call: `SelectSheetsNameStream → (object)`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24

## Countries that replace it

[RU](../../localizations/ru.md)

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "table", object_name: "Excel Buffer")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
