apache-poi
Aan de slag met NPOI
Zoeken…
Invoering
Het is een .NET-versie van het POI Java-project. hiermee kunnen xls-, doc-, ppt-bestanden worden gelezen / geschreven zonder Microsoft Office geïnstalleerd. Details over documentatie zijn hier beschikbaar: https://github.com/tonyqus/npoi
NPOI installeren
De beste manier om alle bibliotheken met betrekking tot NPOI op te nemen is NUGet Pakketbeheer. Zoek naar NPOI in het venster NUGet-pakketbeheer.
Als het eenmaal is geïnstalleerd, verschijnt alle benodigde bibliotheken in het referentiegedeelte van uw huidige project
Neem vervolgens de NPOI op deze manier op in uw bestand
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel
Maak een Excel-bestand
MemoryStream excelMS = GetExcelFile();
//Using Resposne Stream to Make File Available for User to Download;
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", @"Excel_" + DateTime.Now.ToString("yyyy-dd-M-HH-mm") + ".xlsx"));
Response.BinaryWrite(excelMS.ToArray());
Response.End();
wees voorzichtig tijdens het gebruik van het MIME-type. je hebt verschillende MIME-typen voor verschillende bestandsindelingen. Voor EX xltm-extensie is dit "application / vnd.ms-excel.template.macroEnabled.12"; xlxs extensie wordt het "application / vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Verschillende ondersteunde MIME-typen MS staan op deze link .
public MemoryStream GetExcelFile()
{
//Excel File Stream
MemoryStream ms = null;
// create workbook
XSSFWorkbook workbook = new XSSFWorkbook();
// the table named mySheet
//Assigning New Sheet Name /
XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet("WorkSheet");
// Assuming FreezePaneRow = 10, FreezePaneColumn = 11 in the config file
int freezeRow = Convert.ToInt32(ConfigurationManager.AppSettings["FreezePaneRow"]);
int freezeCol = Convert.ToInt32(ConfigurationManager.AppSettings["FreezePaneCol"]);
try
{
// Freeze Created Excel Sheet Row;
sheet.CreateFreezePane(freezeCol, freezeRow, freezeCol, freezeRow);
//Freezing only the Header Row;
sheet.CreateFreezePane(0, 1);
using (ms = new MemoryStream())
{
logger.Info("Using Memory Stream to Create New WorkBook");
workbook.Write(ms); // Write to memory stream for download through browser
}
}
catch (Exception Ex)
{ ... }
return ms;
}
Een Excel-bestand lezen
Er zijn verschillende manieren om een Excel-bestand te lezen. Ik zal een voorbeeld geven met de parameter van het bestandspad. Je kunt op verschillende manieren een bestand lezen in dit bericht.
public void ReadExcel(string path)
{
// Write data in workbook from xls document.
XSSFWorkbook workbook = new XSSFWorkbook(path);
// Read the current table data
XSSFSheet sheet = (XSSFSheet)workbook.GetSheetAt(0);
// Read the current row data
XSSFRow headerRow = (XSSFRow)sheet.GetRow(0);
// LastCellNum is the number of cells of current rows
int cellCount = headerRow.LastCellNum;
DataTable dt = new DataTable();
bool isBlanKRow = false;
try
{
if (dt.Rows.Count == 0)
{
//Reading First Row as Header for Excel Sheet;
try
{
for (int j = headerRow.FirstCellNum; j < cellCount; j++)
{
// get data as the column header of DataTable
DataColumn column = new DataColumn(headerRow.GetCell(j).StringCellValue);
dt.Columns.Add(column);
}
}
catch (Exception Ex)
{ }
}
for (int sheetindex = 0; sheetindex < workbook.NumberOfSheets; sheetindex++)
{
sheet = (XSSFSheet)workbook.GetSheetAt(sheetindex);
if (null != sheet)
{
// LastRowNum is the number of rows of current table
int rowCount = sheet.LastRowNum + 1;
//Reading Rows and Copying it to Data Table;
try
{
for (int i = (sheet.FirstRowNum + 1); i < rowCount; i++)
{
XSSFRow row = (XSSFRow)sheet.GetRow(i);
DataRow dataRow = dt.NewRow();
isBlanKRow = true;
try
{
for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (null != row.GetCell(j) && !string.IsNullOrEmpty(row.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(row.GetCell(j).ToString()))
{
dataRow[j] = row.GetCell(j).ToString();
isBlanKRow = false;
}
}
}
catch (Exception Ex)
{ }
if (!isBlanKRow)
{
dt.Rows.Add(dataRow);
}
}
}
catch (Exception Ex)
{ }
}
}
}
catch (Exception Ex)
{ }
finally
{
workbook.UnlockStructure();
workbook.UnlockRevision();
workbook.UnlockWindows();
workbook = null;
sheet = null;
}
}
