Suche…


Einführung

Es ist die .NET-Version des POI-Java-Projekts. Es ermöglicht das Lesen und Schreiben von XLS-, Doc.Ppt-Dateien ohne Microsoft Office. Details zur Dokumentation finden Sie hier: https://github.com/tonyqus/npoi

NPOI installieren

Der beste Weg, alle mit NPOI verwandten Bibliotheken aufzunehmen, ist NUGet Package Manager. Suchen Sie nach NPOI im NUGet-Paket-Manager-Fenster.

Geben Sie hier die Bildbeschreibung ein

Nach der erfolgreichen Installation wird die benötigte Bibliothek im Referenzabschnitt Ihres aktuellen Projekts angezeigt Geben Sie hier die Bildbeschreibung ein

Fügen Sie dann die NPOI wie folgt in Ihre Datei ein

using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel

Erstellen Sie eine Excel-Datei

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();

Seien Sie vorsichtig, wenn Sie den MIME-Typ verwenden. Sie haben verschiedene MIME-Typen für verschiedene Dateiformate ausgewählt. Für die EX xltm-Erweiterung ist dies "application / vnd.ms-excel.template.macroEnabled.12"; xlxs-Erweiterung: "application / vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Verschiedene unterstützte MIME-Typen finden Sie unter dieser Verknüpfung .

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;
}

Eine Excel-Datei lesen

Es gibt verschiedene Ansätze, eine Excel-Datei zu lesen. Ich gebe ein Beispiel mit dem Dateipfad-Parameter. In diesem Beitrag erhalten Sie verschiedene Möglichkeiten, eine Datei zu lesen.

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;
            }
        }


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow