apache-poi
Rozpoczęcie pracy z NPOI
Szukaj…
Wprowadzenie
To jest .NET wersja projektu Java Java. pozwala na odczyt / zapis plików xls, doc, ppt bez zainstalowanego pakietu Microsoft Office. Szczegółowe informacje na temat dokumentacji są dostępne tutaj: https://github.com/tonyqus/npoi
Instalowanie NPOI
Najlepszym sposobem na dołączenie całej biblioteki związanej z NPOI jest NUGet Package Manager. Wyszukaj NPOI w oknie menedżera pakietów NUGet.
Po pomyślnym zainstalowaniu cała potrzebna biblioteka pojawi się w części referencyjnej bieżącego projektu
Następnie dołącz NPOI do swojego pliku w ten sposób
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel
Utwórz plik Excel
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();
zachowaj ostrożność podczas korzystania z typu MIME. musisz wybrać różne typy MIME dla różnych formatów plików. W przypadku rozszerzenia EX xltm będzie to „application / vnd.ms-excel.template.macroEnabled.12”; rozszerzenie xlxs będzie to „application / vnd.openxmlformats-officedocument.spreadsheetml.sheet”; Różne typy MIME obsługiwane MS znajduje się pod tym linkiem .
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;
}
Czytanie pliku Excela
Istnieją różne podejścia do odczytu pliku programu Excel. Podam przykład z parametrem ścieżki pliku. Możesz uzyskać różne sposoby odczytu pliku w tym poście.
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;
}
}
