Friday 20 October 2017

.net - How do I create an Excel (.XLS and .XLSX) file in C# without installing Microsoft Office?

itemprop="text">

How can I create an Excel spreadsheet
with C# without requiring Excel to be installed on the machine that's running the
code?



Answer




You can use a library called ExcelLibrary.
It's a free, open source library posted on Google
Code:



href="https://code.google.com/archive/p/excellibrary/"
rel="noreferrer">ExcelLibrary




This
looks to be a port of the PHP ExcelWriter that you mentioned above. It will not write to
the new .xlsx format yet, but they are working on adding that functionality
in.



It's very simple, small and easy to use.
Plus it has a DataSetHelper that lets you use DataSets and DataTables to easily work
with Excel data.



ExcelLibrary seems to still
only work for the older Excel format (.xls files), but may be adding support in the
future for newer 2007/2010 formats.



You can
also use rel="noreferrer">EPPlus, which works only for Excel 2007/2010 format files
(.xlsx files). There's also rel="noreferrer">NPOI which works with
both.



There are a few known bugs with each
library as noted in the comments. In all, EPPlus seems to be the best choice as time
goes on. It seems to be more actively updated and documented as
well.




Also, as noted by
@АртёмЦарионов below, EPPlus has support for Pivot Tables and ExcelLibrary may have some
support ( rel="noreferrer">Pivot table issue in
ExcelLibrary
)



Here are a couple links
for quick reference:
href="https://code.google.com/archive/p/excellibrary/"
rel="noreferrer">ExcelLibrary - href="https://www.gnu.org/licenses/lgpl.html" rel="noreferrer">GNU Lesser
GPL
rel="noreferrer">EPPlus - href="https://github.com/JanKallman/EPPlus/blob/master/LICENSE" rel="noreferrer">GNU
Lesser General Public License (LGPL)
href="https://github.com/tonyqus/npoi" rel="noreferrer">NPOI - href="https://github.com/tonyqus/npoi/blob/master/LICENSE" rel="noreferrer">Apache
License



Here some example
code for ExcelLibrary:



Here is an
example taking data from a database and creating a workbook from it. Note that the
ExcelLibrary code is the single line at the
bottom:



//Create the data set and
table

DataSet ds = new DataSet("New_DataSet");
DataTable
dt = new DataTable("New_DataTable");

//Set the locale for
each
ds.Locale =
System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale =
System.Threading.Thread.CurrentThread.CurrentCulture;

//Open a DB
connection (in this example with OleDB)
OleDbConnection con = new
OleDbConnection(dbConnectionString);
con.Open();


//Create
a query and fill the data table with the data from the DB
string sql = "SELECT
Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql,
con);
OleDbDataAdapter adptr = new
OleDbDataAdapter();

adptr.SelectCommand =
cmd;
adptr.Fill(dt);
con.Close();


//Add
the table to the data set
ds.Tables.Add(dt);

//Here's the
easy part. Create the Excel worksheet from the data
set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls",
ds);


Creating the
Excel file is as easy as that. You can also manually create Excel files, but the above
functionality is what really impressed me.



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...