commanet.Excel 1.1.1

dotnet add package commanet.Excel --version 1.1.1
NuGet\Install-Package commanet.Excel -Version 1.1.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="commanet.Excel" Version="1.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add commanet.Excel --version 1.1.1
#r "nuget: commanet.Excel, 1.1.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install commanet.Excel as a Cake Addin
#addin nuget:?package=commanet.Excel&version=1.1.1

// Install commanet.Excel as a Cake Tool
#tool nuget:?package=commanet.Excel&version=1.1.1

commanet.Excel


Library for reading/writing Excel documents. Based on Microsoft OpenXML SDK. Supports only XML-based formats: *.xlsx , *.xlsm

Example of usage
    // Open existed Excel file
    var xls = XLWorkbook.Open(MyExcelFilePath);
    // Set cell value 
    xls["A1"] = "Hello Excel World!";
    // Close file (save) 
    xls.Close();
Cells/Ranges addressing

Full format of cells range adddress:

[SheetName]![$]Column1[$]Row1[:[$]Column2[$]Row2]

As address can be used named area.

Examples:

Address Converted to full addresss
A1 Sheet1!A1:A1
A1:A2 Sheet1!A1:A2
My Sheet!A1:C4 'My Sheet'!A1:C4
MyNamedArea Address extracted from named area definition
XLWorkbook class

All manipulations with Excel file perfromed by methods of this class.

Document Open/Close/Save operations:


// Create new workbook in memory 
public XLWorkbook(SQLDBConnection db = null);

// Open existed Excel file        
public static XLWorkbook Open(string FileName, bool Editable = true, SQLDBConnection db = null)

// Open Excel file in stream
public static XLWorkbook Open(Stream stream, bool Editable = true, SQLDBConnection db = null)

// Close Excel file (autosave changes)
public void Close()

// Save changes
public void Save()

// Save changes in another file
public void SaveAs(string FilePath)

Access to cells:

var xls = XLWorkbook.Open(MyExcelFilePath);

public string this[string RefAddress]{get;set;}
// Example
xls["A1"] = "Hello World";

public void SetCellValue<T>(string RefAddr, T value);
public void SetCellValue<T>(string SheetName, uint ColumnIdx, uint RowIdx, T value);
// Examples
xls.SetCellValue<int>("A1",123);
xls.SetCellValue<double>("Sheet2",1,1,123.456);

public void GetCellValue<T>(string RefAddr);
public void GetCellValue<T>(string SheetName, uint ColumnIdx, uint RowIdx);
// Examples
int iv = xls.SetCellValue<int>("A1");
int id = xls.SetCellValue<double>("A2");

// Filling cells range from 2-d jagged array
public void FillArea(string RefAddress, object[][] data, bool Extend = true, bool Transposed = false);
// Examples
var data = new int[][] { 
  new int[] { 11, 12, 13 }, 
  new int[] { 21, 22, 23 }, 
  new int[] { 31, 32, 33 } };
xls.FillArea("ExtendedGrid", data);

xls.FillArea("Sheet2!A1:C3", data);

//Filling cells from object properties
public void FillCells<T>(T obj);

//Example
public class TestClass
{
    public int Field1 { get; set; }
    public int Field2 { get; set; }
    public int Field3 { get; set; }
}

var xls = XLWorkbook.Open(outfile);
var data = new TestClass() { 
        Field1 = 11, 
        Field2 = 12, 
        Field3 = 13};

xls.FillCellss(data);

xls.Close();

//Filling cells from dictionary
public void FillCells(Dictionary<string,object> data);

//Example
var xls = XLWorkbook.Open(outfile);

var data = new Dictionary<string, object>();
data.Add("Field1", 11);
data.Add("Field2", 12);
data.Add("Field3", 13);

xls.FillCells(data);

xls.Close();

Database Connection

Database connection (optional) can be accessed by XLWorkbook.Db property. Methods for filleing data like FillArea, FillCells use it natively.

FillArea options

Extend option.

With this option provided cells area address should refer for one row of data. For next data rows in worksheet will be inserted new rows after given area. Formatting of new cells will be copied from original area cells. Existed cells after given area will be shifted.

Transposed option.

If this option is False then filling cells area will be from Up to Down. Otherwise data will be filled from Left to Right.

Example:

var data = new int[][] { 
  new int[] { 11, 12, 13 }, 
  new int[] { 21, 22, 23 }, 
  new int[] { 31, 32, 33 } };
// Not Transposed
xls.FillArea("A1:C3", data,false,false);
// Result in Excel
//    A   B   C
// 1  11  12 13
// 2  21  22 23 
// 3  31  32 33 

// Transposed
xls.FillArea("A1:C3", data,false,true);
// Result in Excel
//    A   B   C
// 1  11  21 31
// 2  12  22 32 
// 3  13  23 33 

Worksheets operations

// Set active (selected) sheet 
public void SetActiveSheet(string SheetName);

Filling cells from SQL Database Database connection optionally can be passes in XLWorkbook constructor. If connection is provided then can be used methods for filling cells from SQL queries.

FillArea Method:

public void FillArea(string RefAddress,string SQL,bool Extend = true, bool Transposed = false, params KeyValuePair<string,object>[] SqlParams);
// Example

db = new SQLDBConnection("sqlite", "", "", ":memory:");
db.Transaction(th =>
{
    th.ExecuteNonQuery("CREATE TABLE test(c1 INTEGER,c2 INTEGER, c3 INTEGER)");
    th.ExecuteNonQuery("INSERT INTO test VALUES(11,12,13)");
    th.ExecuteNonQuery("INSERT INTO test VALUES(21,22,23)");
    th.ExecuteNonQuery("INSERT INTO test VALUES(31,32,33)");
});

var xls = XLWorkbook.Open(outfile,true,db);
var SQL = "SELECT c1,c2,c3 FROM test ORDER BY c1";

// Fill named cells range
xls.FillArea("MyCellsRangeName",SQL);

// Fill addressed cells range
xls.FillArea("Sheet2!A1:C3",SQL);

xls.Close();

FillCells Metod:

public void FillCells(string SQL, params KeyValuePair<string, object>[] SqlParams);

//Example:
var xls = XLWorkbook.Open(outfile, true, db);

var SQL = "SELECT c1 AS G3, c2 AS C30, c3 AS \"Second Sheet!C1\" FROM test ORDER BY c1";
xls.FillCells(SQL);

var SQL = @"SELECT c1 AS MyNamedCell1,
                   c2 AS MyNamedCell2, 
                   c3 AS NyNamedCell3 
            FROM test ORDER BY c1";
xls.FillCells(SQL);

xls.Close();

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1 444 6/24/2020

Release 1