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(params Object[] values) #
Returns: CsvDocument

Adds a new row to the document.

Parameters

values System.Object[] requiredposition: 0
public CsvDocument AddRow(CsvRow row) #
Returns: CsvDocument

Adds an existing row instance to the document.

Parameters

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

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

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

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(String path, CsvLoadOptions options = null) #
Returns: CsvDocument

Loads a CSV document from disk.

Parameters

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

Loads a CSV document from a stream.

Parameters

stream System.IO.Stream requiredposition: 0
Source stream.
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
Load options.
LoadAsync 2 overloads
public static async Task<CsvDocument> LoadAsync(String path, 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
public static async Task<CsvDocument> LoadAsync(Stream stream, CsvLoadOptions options = null, CancellationToken cancellationToken = null) #
Returns: Task<CsvDocument>

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

Parameters

stream System.IO.Stream requiredposition: 0
options OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
cancellationToken System.Threading.CancellationToken = null optionalposition: 2
OpenDataReader 2 overloads
public static DbDataReader OpenDataReader(String path, CsvLoadOptions loadOptions = null, CsvDataReaderOptions readerOptions = null) #
Returns: DbDataReader

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 static DbDataReader OpenDataReader(Stream stream, CsvLoadOptions loadOptions = null, CsvDataReaderOptions readerOptions = null) #
Returns: DbDataReader

Opens a forward-only data reader over a CSV stream.

Parameters

stream System.IO.Stream requiredposition: 0
Readable CSV stream. The stream remains open after the reader is disposed.
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 static DbDataReader OpenTextDataReader(String text, CsvLoadOptions loadOptions = null, CsvDataReaderOptions readerOptions = null) #
Returns: DbDataReader

Creates a forward-only data reader over already-decoded CSV text.

Parameters

text System.String requiredposition: 0
Decoded CSV text.
loadOptions OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 1
CSV load options. MaxInputBytes is measured using UTF-8, matching the prior text-import stream contract.
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 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
public static IEnumerable<T> ReadTextRowsAsParallel<T>(String text, CsvRecordFactoryBuilder<T> factoryBuilder, CsvLoadOptions loadOptions = null, CsvDataReaderOptions readerOptions = null, ParallelRowMappingOptions parallelOptions = null, CancellationToken cancellationToken = null) #
Returns: IEnumerable<T>

Reads decoded CSV text and projects records through bounded workers while preserving source order.

Type Parameters

T
Result row type.

Parameters

text System.String requiredposition: 0
Decoded CSV text.
factoryBuilder OfficeIMO.CSV.CsvRecordFactoryBuilder{``0} requiredposition: 1
Builds the concurrent record factory from resolved headers.
loadOptions OfficeIMO.CSV.CsvLoadOptions = null optionalposition: 2
Optional CSV parsing settings.
readerOptions OfficeIMO.CSV.CsvDataReaderOptions = null optionalposition: 3
Optional reader projection settings.
parallelOptions OfficeIMO.Data.ParallelRowMappingOptions = null optionalposition: 4
Optional worker and batch settings.
cancellationToken System.Threading.CancellationToken = null optionalposition: 5
Cancels parsing and pending projection work.
public CsvDocument RemoveColumn(String name) #
Returns: CsvDocument

Removes a column by name.

Parameters

name System.String requiredposition: 0
Save 2 overloads
public Void Save(String path, 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
public Void Save(Stream destination, CsvSaveOptions options = null) #
Returns: Void

Saves the document to a caller-owned writable stream.

Parameters

destination System.IO.Stream requiredposition: 0
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 1
SaveAsync 2 overloads
public async Task SaveAsync(String path, 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
public Task SaveAsync(Stream destination, CsvSaveOptions options = null, CancellationToken cancellationToken = null) #
Returns: Task

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

Parameters

destination System.IO.Stream requiredposition: 0
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 1
cancellationToken System.Threading.CancellationToken = null optionalposition: 2
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(String columnName, Boolean descending = false, IComparer<Object> comparer = null) #
Returns: CsvDocument

Sorts rows by a column name.

Parameters

columnName System.String requiredposition: 0
descending System.Boolean = false optionalposition: 1
comparer System.Collections.Generic.IComparer{System.Object} = null optionalposition: 2
public CsvDocument SortBy<TKey>(Func<CsvRow, TKey> keySelector, Boolean descending = false, IComparer<TKey> comparer = null) #
Returns: CsvDocument

Sorts rows using a typed key selector.

Type Parameters

TKey

Parameters

keySelector System.Func{OfficeIMO.CSV.CsvRow,``0} requiredposition: 0
descending System.Boolean = false optionalposition: 1
comparer System.Collections.Generic.IComparer{``0} = null optionalposition: 2
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 CsvDocument WithMappingErrorValuePolicy(DataMappingErrorValuePolicy policy) #
Returns: CsvDocument

Sets whether schema and row-mapping failures may include source values.

Parameters

policy OfficeIMO.Data.DataMappingErrorValuePolicy requiredposition: 0
WriteDataReader 6 overloads
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 WriteDataReader(TextWriter writer, IDataReader reader, CsvSaveOptions options, CancellationToken cancellationToken) #
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 requiredposition: 2
Optional save settings.
cancellationToken System.Threading.CancellationToken requiredposition: 3
Token observed while projecting and writing rows.
public static Void WriteDataReader(String path, IDataReader reader, CsvSaveOptions options = null) #
Returns: Void

Writes an open data reader to a CSV file.

Parameters

path System.String requiredposition: 0
Destination CSV path.
reader System.Data.IDataReader requiredposition: 1
Open data reader positioned before the first row.
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 2
CSV serialization options.
public static Void WriteDataReader(String path, IDataReader reader, CsvSaveOptions options, CancellationToken cancellationToken) #
Returns: Void

Writes an open data reader to a CSV file.

Parameters

path System.String requiredposition: 0
Destination CSV path.
reader System.Data.IDataReader requiredposition: 1
Open data reader positioned before the first row.
options OfficeIMO.CSV.CsvSaveOptions requiredposition: 2
CSV serialization options.
cancellationToken System.Threading.CancellationToken requiredposition: 3
Token observed while projecting and writing rows.
public static Void WriteDataReader(Stream destination, IDataReader reader, CsvSaveOptions options = null, Boolean leaveOpen = true) #
Returns: Void

Writes an open data reader to a CSV stream.

Parameters

destination System.IO.Stream requiredposition: 0
Writable destination stream.
reader System.Data.IDataReader requiredposition: 1
Open data reader positioned before the first row.
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 2
CSV serialization options.
leaveOpen System.Boolean = true optionalposition: 3
Whether the destination stream remains open after writing.
public static Void WriteDataReader(Stream destination, IDataReader reader, CsvSaveOptions options, Boolean leaveOpen, CancellationToken cancellationToken) #
Returns: Void

Writes an open data reader to a CSV stream.

Parameters

destination System.IO.Stream requiredposition: 0
Writable destination stream.
reader System.Data.IDataReader requiredposition: 1
Open data reader positioned before the first row.
options OfficeIMO.CSV.CsvSaveOptions requiredposition: 2
CSV serialization options.
leaveOpen System.Boolean requiredposition: 3
Whether the destination stream remains open after writing.
cancellationToken System.Threading.CancellationToken requiredposition: 4
Token observed while projecting and writing rows.
WriteDataReaderParallel 3 overloads
public static Void WriteDataReaderParallel(TextWriter writer, IDataReader reader, CsvSaveOptions options = null, CsvWriteParallelOptions parallelOptions = null, CancellationToken cancellationToken = null) #
Returns: Void

Writes an open data reader to CSV with bounded, ordered parallel row formatting.

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 CSV serialization settings.
parallelOptions OfficeIMO.CSV.CsvWriteParallelOptions = null optionalposition: 3
Optional worker and batch limits.
cancellationToken System.Threading.CancellationToken = null optionalposition: 4
Token observed while reading, formatting, and writing rows.
public static Void WriteDataReaderParallel(String path, IDataReader reader, CsvSaveOptions options = null, CsvWriteParallelOptions parallelOptions = null, CancellationToken cancellationToken = null) #
Returns: Void

Writes an open data reader to a CSV file with bounded, ordered parallel row formatting.

Parameters

path System.String requiredposition: 0
Destination CSV path.
reader System.Data.IDataReader requiredposition: 1
Source data reader positioned before the first row.
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 2
Optional CSV serialization settings.
parallelOptions OfficeIMO.CSV.CsvWriteParallelOptions = null optionalposition: 3
Optional worker and batch limits.
cancellationToken System.Threading.CancellationToken = null optionalposition: 4
Token observed while reading, formatting, and writing rows.
public static Void WriteDataReaderParallel(Stream destination, IDataReader reader, CsvSaveOptions options = null, CsvWriteParallelOptions parallelOptions = null, Boolean leaveOpen = true, CancellationToken cancellationToken = null) #
Returns: Void

Writes an open data reader to a CSV stream with bounded, ordered parallel row formatting.

Parameters

destination System.IO.Stream requiredposition: 0
Writable destination stream.
reader System.Data.IDataReader requiredposition: 1
Source data reader positioned before the first row.
options OfficeIMO.CSV.CsvSaveOptions = null optionalposition: 2
Optional CSV serialization settings.
parallelOptions OfficeIMO.CSV.CsvWriteParallelOptions = null optionalposition: 3
Optional worker and batch limits.
leaveOpen System.Boolean = true optionalposition: 4
Whether the destination stream remains open after writing.
cancellationToken System.Threading.CancellationToken = null optionalposition: 5
Token observed while reading, formatting, and writing rows.
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 DataMappingErrorValuePolicy MappingErrorValuePolicy { get; } #

Gets how source values are represented in schema and row-mapping failures.

Extension Methods

RowsAsParallel``1 3 overloads
public static IEnumerable<T> RowsAsParallel<T>(CsvDocument document, ParallelRowMappingOptions options = null, CancellationToken cancellationToken = null) #
Returns: IEnumerable<T>

Projects rows in bounded parallel batches by matching CSV headers to writable public properties. Results retain source order.

Type Parameters

T

Parameters

document OfficeIMO.CSV.CsvDocument requiredposition: 0
options OfficeIMO.Data.ParallelRowMappingOptions = null optionalposition: 1
cancellationToken System.Threading.CancellationToken = null optionalposition: 2
public static IEnumerable<T> RowsAsParallel<T>(CsvDocument document, Action<RowMapper<T>> configure, ParallelRowMappingOptions options = null, CancellationToken cancellationToken = null) #
Returns: IEnumerable<T>

Projects rows in bounded parallel batches using explicit, AOT-friendly column assignments. Results retain source order.

Type Parameters

T

Parameters

arg1 OfficeIMO.CSV.CsvDocument requiredposition: 0
arg2 System.Action{OfficeIMO.Data.RowMapper{``0}} requiredposition: 1
arg3 OfficeIMO.Data.ParallelRowMappingOptions = null optionalposition: 2
arg4 System.Threading.CancellationToken = null optionalposition: 3
public static IEnumerable<T> RowsAsParallel<T>(CsvDocument document, Func<IDataRecord, T> factory, ParallelRowMappingOptions options = null, CancellationToken cancellationToken = null) #
Returns: IEnumerable<T>

Projects rows in bounded parallel batches with a caller-supplied factory. Results retain source order.

Type Parameters

T

Parameters

arg1 OfficeIMO.CSV.CsvDocument requiredposition: 0
arg2 System.Func{System.Data.IDataRecord,``0} requiredposition: 1
arg3 OfficeIMO.Data.ParallelRowMappingOptions = null optionalposition: 2
arg4 System.Threading.CancellationToken = null optionalposition: 3
RowsAs``1 3 overloads
public static IEnumerable<T> RowsAs<T>(CsvDocument document) #
Returns: IEnumerable<T>

Projects rows by matching CSV headers to writable public properties. Matching is case-insensitive and also ignores spaces and punctuation.

Type Parameters

T

Parameters

document OfficeIMO.CSV.CsvDocument requiredposition: 0
public static IEnumerable<T> RowsAs<T>(CsvDocument document, Action<RowMapper<T>> configure) #
Returns: IEnumerable<T>

Projects rows using explicit, AOT-friendly column assignments.

Type Parameters

T

Parameters

arg1 OfficeIMO.CSV.CsvDocument requiredposition: 0
arg2 System.Action{OfficeIMO.Data.RowMapper{``0}} requiredposition: 1
public static IEnumerable<T> RowsAs<T>(CsvDocument document, Func<IDataRecord, T> factory) #
Returns: IEnumerable<T>

Projects rows with a caller-supplied factory. This overload supports constructor-bound and other models without a public parameterless constructor.

Type Parameters

T

Parameters

document OfficeIMO.CSV.CsvDocument requiredposition: 0
Document whose rows are projected.
factory System.Func{System.Data.IDataRecord,``0} requiredposition: 1
Creates one model instance from the current row.