- Provides a fast way of reading and writing to *.xlsx Excel files.
- Small memory footprint while running
- Does not use the Open XML SDK to interact with the data but going directly and editing the underlying xml files.
- This project is not intended to be a replacement for full featured Excel packages with things like formatting, just light weight fast way of interacting with data in Excel.
- Contribute using Visual Studio 2017
- Built using .NetStandard 1.3 so it should run on
- .Net Core 1.0
- .Net Framework 4.6
- Mono
- Xamarin.iOS
- Xamarin.Androud
- Universal Windows Platform
- Built using .Net Framework 4.5
- Contribute using Visual Studio 2015
- This version may not be up to date
PM> Install-Package FastExcel
This demo uses Generic objects, ie any object you wish with public properties
using (FastExcel.FastExcel fastExcel = new FastExcel.FastExcel(outputFile))
{
List<MyObject> objectList = new List<MyObject>();
for (int rowNumber = 1; rowNumber < NumberOfRecords; rowNumber++)
{
MyObject genericObject = new MyObject();
genericObject.StringColumn1 = "A string " + rowNumber.ToString();
genericObject.IntegerColumn2 = 45678854;
genericObject.DoubleColumn3 = 87.01d;
genericObject.ObjectColumn4 = DateTime.Now.ToLongTimeString();
objectList.Add(genericObject);
}
fastExcel.Write(objectList, "sheet3", true);
}
This demo lets you specify exactly which cell you are writing to
// Get your template and output file paths
FileInfo templateFile = new FileInfo("Template.xlsx");
FileInfo outputFile = new FileInfo("C:\\Temp\\output.xlsx");
//Create a worksheet with some rows
Worksheet worksheet = new Worksheet();
List<Row> rows = new List<Row>();
for (int rowNumber = 1; rowNumber < 100000; rowNumber++)
{
List<Cell> cells = new List<Cell>();
for (int columnNumber = 1; columnNumber < 13; columnNumber++)
{
cells.Add(new Cell(columnNumber, columnNumber * DateTime.Now.Millisecond));
}
cells.Add(new Cell(13, "Hello" + rowNumber));
cells.Add(new Cell(14, "Some Text"));
rows.Add(new Row(rowNumber, cells));
}
worksheet.Rows = rows;
// Create an instance of FastExcel
using (FastExcel.FastExcel fastExcel = new FastExcel.FastExcel(templateFile, outputFile))
{
// Write the data
fastExcel.Write(worksheet, "sheet1");
}
// Get the input file paths
FileInfo inputFile = new FileInfo("C:\\Temp\\input.xlsx");
//Create a worksheet
DataSet worksheet = null;
// Create an instance of Fast Excel
using (FastExcel.FastExcel fastExcel = new FastExcel.FastExcel(inputFile, true))
{
// Read the rows using worksheet name
worksheet = fastExcel.Read("sheet1");
// Read the rows using the worksheet index
// Worksheet indexes are start at 1 not 0
// This method is slightly faster to find the underlying file (so slight you probably wouldn't notice)
worksheet = fastExcel.Read(1);
}
// Get the input file paths
FileInfo inputFile = new FileInfo("C:\\Temp\\fileToRead.xlsx");
// Create an instance of Fast Excel
using (FastExcel.FastExcel fastExcel = new FastExcel.FastExcel(inputFile, true))
{
foreach (var worksheet in fastExcel.Worksheets)
{
Console.WriteLine(string.Format("Worksheet Name:{0}, Index:{1}", worksheet.Name, worksheet.Index));
//To read the rows call read
worksheet.Read();
var rows = worksheet.Rows.ToArray();
//Do something with rows
Console.WriteLine(string.Format("Worksheet Rows:{0}", rows.Count()));
}
}
// Get the input file paths
FileInfo inputFile = new FileInfo("C:\\Temp\\input.xlsx");
//Create a some rows in a worksheet
Worksheet worksheet = new Worksheet();
List<Row> rows = new List<Row>();
for (int rowNumber = 1; rowNumber < NumberOfRecords; rowNumber+= 50)
{
List<Cell> cells = new List<Cell>();
for (int columnNumber = 1; columnNumber < 13; columnNumber+= 2)
{
cells.Add(new Cell(columnNumber, rowNumber));
}
cells.Add(new Cell(13, "Updated Row"));
rows.Add(new Row(rowNumber, cells));
}
worksheet.Rows = rows;
// Create an instance of Fast Excel
using (FastExcel.FastExcel fastExcel = new FastExcel.FastExcel(inputFile))
{
// Read the data
fastExcel.Update(worksheet, "sheet1");
}
-
Sibz
-
paritoshmmmec
-
Insperation for this project came from SejExcelExport by jsegarra1971 who did a great job. I wanted to have my own crack at this problem.