API Reference

Class

CsvDocument

Namespace OfficeIMO.CSV
Assembly OfficeIMO.CSV
Modifiers sealed

Represents a CSV document with a fluent, document-centric API. Thread-safe for independent read enumeration; not thread-safe for concurrent mutations on the same instance.

Inheritance

  • Object
  • CsvDocument

Usage

This type appears in these public API surfaces even when no hand-authored example is attached directly to the page.

Accepted by parameters

Constructors

public CsvDocument() #

Initializes a new in-memory CSV document with default settings.

Methods

public CsvDocument AddColumn(String name, Func<CsvRow, Object> valueFactory) #
Returns: CsvDocument

Adds a computed column to the document.

Parameters

name System.String requiredposition: 0
valueFactory System.Func{OfficeIMO.CSV.CsvRow,System.Object} requiredposition: 1
AddRow 2 overloads
public CsvDocument AddRow(CsvRow row) #
Returns: CsvDocument

Adds a new row to the document.

Parameters

values System.Object[] requiredposition: 0
AddRow(OfficeIMO.CSV.CsvRow row) #

Adds an existing row instance to the document.

Parameters

row OfficeIMO.CSV.CsvRow required
public IEnumerable<CsvRow> AsEnumerable() #
Returns: IEnumerable<CsvRow>

Returns rows as an enumerable sequence. In streaming mode this is lazy.

CreateDataReader 2 overloads
public static CsvDataReader CreateDataReader(String path, CsvLoadOptions loadOptions = null, CsvDataReaderOptions readerOptions = null) #
Returns: CsvDataReader

Creates a forward-only data reader over a CSV file.

Parameters

path System.String requiredposition: 0
Source CSV path.
loadOptions OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
CSV load options.
readerOptions OfficeIMO.CSV.CsvDataReaderOptions = null optionalposition: 2
Reader projection options. When omitted, all columns are emitted as strings.

Returns

A data reader suitable for DataTable loading and provider bulk-copy APIs.

public CsvDataReader CreateDataReader(CsvDataReaderOptions options = null) #
Returns: CsvDataReader

Creates a forward-only data reader over the document rows.

Parameters

options OfficeIMO.CSV.CsvDataReaderOptions = null optionalposition: 0
Reader projection options. When omitted, all columns are emitted as strings.

Returns

A data reader suitable for DataTable loading and provider bulk-copy APIs.

public CsvDocument EnsureInferredSchema(Int32 sampleSize = 1000) #
Returns: CsvDocument

Infers and attaches a schema to the document so subsequent validation uses the sampled structure.

Parameters

sampleSize System.Int32 = 1000 optionalposition: 0
Maximum number of rows to inspect. Defaults to 1000.

Returns

The current document.

public CsvDocument EnsureSchema(Action<CsvSchemaBuilder> buildAction) #
Returns: CsvDocument

Attaches a schema to the document.

Parameters

buildAction System.Action{OfficeIMO.CSV.CsvSchemaBuilder} requiredposition: 0
public CsvDocument Filter(Func<CsvRow, Boolean> predicate) #
Returns: CsvDocument

Filters rows using the provided predicate.

Parameters

predicate System.Func{OfficeIMO.CSV.CsvRow,System.Boolean} requiredposition: 0
public static CsvDocument FromObjects(IEnumerable<Object> items, Char delimiter = ',', CultureInfo culture = null, Encoding encoding = null) #
Returns: CsvDocument

Creates a CSV document from a sequence of objects by projecting their properties or dictionary keys into columns.

Parameters

items System.Collections.Generic.IEnumerable{System.Object} requiredposition: 0
Sequence of objects to convert into CSV rows.
delimiter System.Char = ',' optionalposition: 1
Delimiter to use for the CSV document.
culture System.Globalization.CultureInfo = null optionalposition: 2
Optional culture for value formatting.
encoding System.Text.Encoding = null optionalposition: 3
Optional encoding for file operations.

Returns

A populated CsvDocument.

public CsvSchema InferSchema(Int32 sampleSize = 1000) #
Returns: CsvSchema

Infers a schema from the document header and sampled row values.

Parameters

sampleSize System.Int32 = 1000 optionalposition: 0
Maximum number of rows to inspect. Defaults to 1000.

Returns

A schema containing one inferred column for each header field.

Load 2 overloads
public static CsvDocument Load(Stream stream, CsvLoadOptions options = null) #
Returns: CsvDocument

Loads a CSV document from disk.

Parameters

path System.String requiredposition: 0
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
Load(System.IO.Stream stream, OfficeIMO.CSV.CsvLoadOptions options) #

Loads a CSV document from a stream.

Parameters

stream System.IO.Stream required
Source stream.
options OfficeIMO.CSV.CsvLoadOptions required
Load options.
LoadAsync 2 overloads
public static async Task<CsvDocument> LoadAsync(Stream stream, CsvLoadOptions options = null, CancellationToken cancellationToken = null) #
Returns: Task<CsvDocument>

Asynchronously loads a CSV document from disk.

Parameters

path System.String requiredposition: 0
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
cancellationToken System.Threading.CancellationToken = null optionalposition: 2
LoadAsync(System.IO.Stream stream, OfficeIMO.CSV.CsvLoadOptions options, System.Threading.CancellationToken cancellationToken) #

Asynchronously loads a CSV document from a caller-owned stream.

Parameters

stream System.IO.Stream required
options OfficeIMO.CSV.CsvLoadOptions required
cancellationToken System.Threading.CancellationToken required
public CsvDocument Materialize() #
Returns: CsvDocument

Forces a streaming document to materialize into memory, enabling transformations.

public static CsvDocument Parse(String text, CsvLoadOptions options = null) #
Returns: CsvDocument

Parses a CSV document from text.

Parameters

text System.String requiredposition: 0
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
ReadFieldSpans 2 overloads
public static Void ReadFieldSpans<TVisitor>(ReadOnlySpan<Char> text, ref TVisitor fieldVisitor, CsvLoadOptions options = null) #
Returns: Void

Reads CSV fields from a file in a single pass without materializing unquoted fields as strings.

Type Parameters

TVisitor

Parameters

path System.String requiredposition: 0
Source CSV path.
fieldAction OfficeIMO.CSV.CsvFieldSpanAction requiredposition: 1
Action receiving each field as a transient span.
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 2
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadFieldSpans(System.IO.TextReader reader, OfficeIMO.CSV.CsvFieldSpanAction fieldAction, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV fields from a reader in a single pass without materializing unquoted fields as strings.

Parameters

reader System.IO.TextReader required
Source text reader.
fieldAction OfficeIMO.CSV.CsvFieldSpanAction required
Action receiving each field as a transient span.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings. Header handling is not applied; records are emitted as parsed.
public static Void ReadFieldSpansFromText<TVisitor>(String text, ref TVisitor fieldVisitor, CsvLoadOptions options = null) #
Returns: Void

Reads CSV fields from text in a single pass without materializing unquoted fields as strings.

Type Parameters

TVisitor

Parameters

text System.String requiredposition: 0
Source CSV text.
fieldAction OfficeIMO.CSV.CsvFieldSpanAction requiredposition: 1
Action receiving each field as a transient span.
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 2
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadFieldSpansFromText``1(System.String text, ``0@ fieldVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV fields from text in a single pass without materializing unquoted fields as strings.

Type Parameters

TVisitor
Struct visitor type receiving each field.

Parameters

text System.String required
Source CSV text.
fieldVisitor ``0@ required
Visitor receiving each field as a transient span.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadFieldSpans``1 3 overloads
ReadFieldSpans``1(System.String path, ``0@ fieldVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV fields from a file in a single pass without materializing unquoted fields as strings.

Type Parameters

TVisitor
Struct visitor type receiving each field.

Parameters

path System.String required
Source CSV path.
fieldVisitor ``0@ required
Visitor receiving each field as a transient span.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadFieldSpans``1(System.IO.TextReader reader, ``0@ fieldVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV fields from a reader in a single pass without materializing unquoted fields as strings.

Type Parameters

TVisitor
Struct visitor type receiving each field.

Parameters

reader System.IO.TextReader required
Source text reader.
fieldVisitor ``0@ required
Visitor receiving each field as a transient span.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadFieldSpans``1(System.ReadOnlySpan{System.Char} text, ``0@ fieldVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV fields from text in a single pass without materializing unquoted fields as strings.

Type Parameters

TVisitor
Struct visitor type receiving each field.

Parameters

text System.ReadOnlySpan{System.Char} required
Source CSV text.
fieldVisitor ``0@ required
Visitor receiving each field as a transient span.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadRecords 2 overloads
public static IEnumerable<String[]> ReadRecords(TextReader reader, CsvLoadOptions options = null) #
Returns: IEnumerable<String[]>

Reads raw CSV records from a file as an enumerable sequence.

Parameters

path System.String requiredposition: 0
Source CSV path.
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadRecords(System.IO.TextReader reader, OfficeIMO.CSV.CsvLoadOptions options) #

Reads raw CSV records from a reader as an enumerable sequence.

Parameters

reader System.IO.TextReader required
Source text reader.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadRecordsReusable 2 overloads
public static Void ReadRecordsReusable(TextReader reader, Action<IReadOnlyList<String>> recordAction, CsvLoadOptions options = null) #
Returns: Void

Reads raw CSV records from a file in a single pass while reusing the record value buffer for unquoted records.

Parameters

path System.String requiredposition: 0
Source CSV path.
recordAction System.Action{System.Collections.Generic.IReadOnlyList{System.String}} requiredposition: 1
Action receiving the current record values. Record values must not be captured after the callback returns.
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 2
Optional load settings. Header handling is not applied; records are emitted as parsed.
ReadRecordsReusable(System.IO.TextReader reader, System.Action{System.Collections.Generic.IReadOnlyList{System.String}} recordAction, OfficeIMO.CSV.CsvLoadOptions options) #

Reads raw CSV records from a reader in a single pass while reusing the record value buffer for unquoted records.

Parameters

reader System.IO.TextReader required
Source text reader.
recordAction System.Action{System.Collections.Generic.IReadOnlyList{System.String}} required
Action receiving the current record values. Record values must not be captured after the callback returns.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings. Header handling is not applied; records are emitted as parsed.
public static Void ReadRowFieldSpans<TVisitor>(ReadOnlySpan<Char> text, ref TVisitor rowVisitor, CsvLoadOptions options = null) #
Returns: Void

Type Parameters

TVisitor

Parameters

path String requiredposition: 0
rowVisitor TVisitor requiredposition: 1
options CsvLoadOptions = null optionalposition: 2
public static Void ReadRowFieldSpansFromText<TVisitor>(String text, ref TVisitor rowVisitor, CsvLoadOptions options = null) #
Returns: Void

Type Parameters

TVisitor

Parameters

text String requiredposition: 0
rowVisitor TVisitor requiredposition: 1
options CsvLoadOptions = null optionalposition: 2
ReadRowFieldSpansFromText``1(System.String text, ``0@ rowVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV data rows from text in a single pass, applying header discovery while avoiding string materialization for unquoted data fields.

Type Parameters

TVisitor
Struct visitor type receiving each data row and field.

Parameters

text System.String required
Source CSV text.
rowVisitor ``0@ required
Visitor receiving normalized headers and transient data field spans.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings.
ReadRowFieldSpans``1 3 overloads
ReadRowFieldSpans``1(System.String path, ``0@ rowVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV data rows from a file in a single pass, applying header discovery while avoiding string materialization for unquoted data fields.

Type Parameters

TVisitor
Struct visitor type receiving each data row and field.

Parameters

path System.String required
Source CSV path.
rowVisitor ``0@ required
Visitor receiving normalized headers and transient data field spans.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings.
ReadRowFieldSpans``1(System.IO.TextReader reader, ``0@ rowVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV data rows from a reader in a single pass, applying header discovery while avoiding string materialization for unquoted data fields.

Type Parameters

TVisitor
Struct visitor type receiving each data row and field.

Parameters

reader System.IO.TextReader required
Source text reader.
rowVisitor ``0@ required
Visitor receiving normalized headers and transient data field spans.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings.
ReadRowFieldSpans``1(System.ReadOnlySpan{System.Char} text, ``0@ rowVisitor, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV data rows from text in a single pass, applying header discovery while avoiding string materialization for unquoted data fields.

Type Parameters

TVisitor
Struct visitor type receiving each data row and field.

Parameters

text System.ReadOnlySpan{System.Char} required
Source CSV text.
rowVisitor ``0@ required
Visitor receiving normalized headers and transient data field spans.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings.
ReadRows 2 overloads
public static Void ReadRows(TextReader reader, Action<IReadOnlyList<String>, IReadOnlyList<String>> rowAction, CsvLoadOptions options = null) #
Returns: Void

Reads a CSV file in a single pass and invokes an action for each data row.

Parameters

path System.String requiredposition: 0
Source CSV path.
rowAction System.Action{System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String}} requiredposition: 1
Action receiving the header and current row values.
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 2
Optional load settings.
ReadRows(System.IO.TextReader reader, System.Action{System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String}} rowAction, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV data in a single pass and invokes an action for each data row.

Parameters

reader System.IO.TextReader required
Source text reader.
rowAction System.Action{System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String}} required
Action receiving the header and current row values.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings.
ReadRowsReusable 2 overloads
public static Void ReadRowsReusable(TextReader reader, Action<IReadOnlyList<String>, IReadOnlyList<String>> rowAction, CsvLoadOptions options = null) #
Returns: Void

Reads a CSV file in a single pass while reusing the row value buffer for unquoted rows.

Parameters

path System.String requiredposition: 0
Source CSV path.
rowAction System.Action{System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String}} requiredposition: 1
Action receiving the header and current row values. Row values must not be captured after the callback returns.
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 2
Optional load settings.
ReadRowsReusable(System.IO.TextReader reader, System.Action{System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String}} rowAction, OfficeIMO.CSV.CsvLoadOptions options) #

Reads CSV data in a single pass while reusing the row value buffer for unquoted rows.

Parameters

reader System.IO.TextReader required
Source text reader.
rowAction System.Action{System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String}} required
Action receiving the header and current row values. Row values must not be captured after the callback returns.
options OfficeIMO.CSV.CsvLoadOptions required
Optional load settings.
public CsvDocument RemoveColumn(String name) #
Returns: CsvDocument

Removes a column by name.

Parameters

name System.String requiredposition: 0
Save 2 overloads
public Void Save(Stream destination, CsvSaveOptions options = null) #
Returns: Void

Saves the document to the specified path.

Parameters

path System.String requiredposition: 0
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 1
Save(System.IO.Stream destination, OfficeIMO.CSV.CsvSaveOptions options) #

Saves the document to a caller-owned writable stream.

Parameters

destination System.IO.Stream required
options OfficeIMO.CSV.CsvSaveOptions required
SaveAsync 2 overloads
public Task SaveAsync(Stream destination, CsvSaveOptions options = null, CancellationToken cancellationToken = null) #
Returns: Task

Asynchronously saves the document to a path.

Parameters

path System.String requiredposition: 0
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 1
cancellationToken System.Threading.CancellationToken = null optionalposition: 2
SaveAsync(System.IO.Stream destination, OfficeIMO.CSV.CsvSaveOptions options, System.Threading.CancellationToken cancellationToken) #

Asynchronously saves the document to a caller-owned writable stream.

Parameters

destination System.IO.Stream required
options OfficeIMO.CSV.CsvSaveOptions required
cancellationToken System.Threading.CancellationToken required
public static Void SaveObjects(String path, IEnumerable<Object> items, CsvSaveOptions options = null) #
Returns: Void

Saves a sequence of objects directly as CSV without materializing a CsvDocument.

Parameters

path System.String requiredposition: 0
Destination CSV path.
items System.Collections.Generic.IEnumerable{System.Object} requiredposition: 1
Sequence of objects to convert into CSV rows.
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 2
Optional save settings.
public CsvDocument SortBy<TKey>(Func<CsvRow, TKey> keySelector, Boolean descending = false, IComparer<TKey> comparer = null) #
Returns: CsvDocument

Sorts rows by a column name.

Type Parameters

TKey

Parameters

columnName System.String requiredposition: 0
descending System.Boolean = false optionalposition: 1
comparer System.Collections.Generic.IComparer{System.Object} = null optionalposition: 2
SortBy``1(System.Func{OfficeIMO.CSV.CsvRow,``0} keySelector, System.Boolean descending, System.Collections.Generic.IComparer{``0} comparer) #

Sorts rows using a typed key selector.

Parameters

keySelector System.Func{OfficeIMO.CSV.CsvRow,``0} required
descending System.Boolean required
comparer System.Collections.Generic.IComparer{``0} required
public Byte[] ToBytes(CsvSaveOptions options = null) #
Returns: Byte[]

Encodes the document using the selected CSV encoding and compression.

Parameters

options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 0
public DataTable ToDataTable(CsvDataTableOptions options = null) #
Returns: DataTable

Projects the CSV document into a DataTable.

Parameters

options OfficeIMO.CSV.CsvDataTableOptions = null optionalposition: 0
DataTable projection options. When omitted, all columns are emitted as strings.

Returns

A DataTable containing all document rows.

public MemoryStream ToStream(CsvSaveOptions options = null) #
Returns: MemoryStream

Encodes the document in a new writable memory stream positioned at the beginning.

Parameters

options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 0
ToString 2 overloads
public String ToString(CsvSaveOptions options) #
Returns: String

Serializes the document to a string using the provided save options.

Parameters

options OfficeIMO.CSV.CsvSaveOptions requiredposition: 0
public override String ToString() #
Returns: String
public CsvDocument Transform(Func<CsvDocument, CsvDocument> transformer) #
Returns: CsvDocument

Executes a custom transformation.

Parameters

transformer System.Func{OfficeIMO.CSV.CsvDocument,OfficeIMO.CSV.CsvDocument} requiredposition: 0
public CsvDocument Validate(out IReadOnlyList<CsvValidationError> errors) #
Returns: CsvDocument

Validates the document against the configured schema.

Parameters

errors System.Collections.Generic.IReadOnlyList{OfficeIMO.CSV.CsvValidationError}@ requiredposition: 0
public CsvDocument ValidateOrThrow() #
Returns: CsvDocument

Validates and throws when validation fails.

public CsvDocument WithCulture(CultureInfo culture) #
Returns: CsvDocument

Sets the culture for type conversions.

Parameters

culture System.Globalization.CultureInfo requiredposition: 0
public CsvDocument WithDateTimeFormats(params String[] formats) #
Returns: CsvDocument

Sets additional date/time formats used by typed row conversion and schema validation.

Parameters

formats System.String[] requiredposition: 0
public CsvDocument WithDelimiter(Char delimiter) #
Returns: CsvDocument

Sets the delimiter used for reading and writing.

Parameters

delimiter System.Char requiredposition: 0
public CsvDocument WithEncoding(Encoding encoding) #
Returns: CsvDocument

Sets the encoding used for file operations.

Parameters

encoding System.Text.Encoding requiredposition: 0
public CsvDocument WithHeader(params String[] headers) #
Returns: CsvDocument

Replaces the header row.

Parameters

headers System.String[] requiredposition: 0
public static Void WriteDataReader(TextWriter writer, IDataReader reader, CsvSaveOptions options = null) #
Returns: Void

Writes an IDataReader directly as CSV without materializing a CsvDocument.

Parameters

writer System.IO.TextWriter requiredposition: 0
Destination text writer.
reader System.Data.IDataReader requiredposition: 1
Source data reader positioned before the first row.
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 2
Optional save settings.
public static Void WriteObjects(TextWriter writer, IEnumerable<Object> items, CsvSaveOptions options = null) #
Returns: Void

Writes a sequence of objects directly as CSV without materializing a CsvDocument.

Parameters

writer System.IO.TextWriter requiredposition: 0
Destination text writer.
items System.Collections.Generic.IEnumerable{System.Object} requiredposition: 1
Sequence of objects to convert into CSV rows.
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 2
Optional save settings.

Properties

public IReadOnlyList<String> Header { get; } #

Gets the document header columns.

public Char Delimiter { get; } #

Gets the delimiter used by the document.

public CultureInfo Culture { get; } #

Gets the culture used for type conversions.

public Encoding Encoding { get; } #

Gets the encoding used when reading or writing files.

public IReadOnlyList<String> DateTimeFormats { get; } #

Gets the configured date/time formats used by typed conversions.

public CsvLoadMode Mode { get; } #

Gets the load mode of the document.

Extension Methods

public static IEnumerable<T> Map<T>(CsvDocument document, Action<CsvMapper<T>> configure) #
Returns: IEnumerable<T>

Type Parameters

T

Parameters

document CsvDocument requiredposition: 0
configure Action<CsvMapper<T>> requiredposition: 1