zoukankan      html  css  js  c++  java
  • ExcelHelper based on NPOI

    //Export data to excel via NPOI 

    public static void ExportDataTableToExcel(DataTable dataTable, string excelFileName = null)
    {
    if (dataTable == null)
    {
    return;
    }
    XSSFWorkbook workbook = new XSSFWorkbook();
    ISheet firstSheet = workbook.CreateSheet();
    IRow headerRow = firstSheet.CreateRow(0);
    var dtColumns = dataTable.Columns;
    var dtColumnsCount = dtColumns.Count;
    
    for (int i = 0; i < dtColumnsCount; i++)
    {
    string headerName = dtColumns[i].ColumnName;
    ICell headerCell = headerRow.CreateCell(i);
    headerCell.SetCellValue(headerName);
    }
    
    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
    var dataRow = firstSheet.CreateRow(i + 1);
    for (int j = 0; j < dtColumnsCount; j++)
    {
    ICell dataCell = dataRow.CreateCell(j);
    var cellValue = dataTable.Rows[i][j];
    dataCell.SetCellValue(cellValue?.ToString());
    }
    }
    
    for (int i = 0; i < dtColumnsCount; i++)
    {
    firstSheet.AutoSizeColumn(i);
    }
    
    if (string.IsNullOrEmpty(excelFileName))
    {
    excelFileName = Directory.GetCurrentDirectory() + DateTime.Now.ToString("yyyyMMddmmssffff") + ".xlsx";
    }
    using (FileStream excelStream = new FileStream(excelFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
    {
    workbook.Write(excelStream);
    }
    }

    //Convert excel file to DataTable 

     public static DataTable ConvertExcelToDataTable(string excelFile)
            {
                if(string.IsNullOrEmpty(excelFile))
                {
                    return new DataTable();
                }
                IWorkbook workbook;
                DataTable dt = new DataTable();
                using (FileStream excelStream = new FileStream(excelFile, FileMode.Open,FileAccess.Read))
                {
                    workbook = new XSSFWorkbook(excelStream);
                }
    
                ISheet firstSheet = workbook.GetSheetAt(0);
                var columnsCount = firstSheet.GetRow(0).LastCellNum;
                for(int i=0;i<columnsCount;i++)
                {
                    dt.Columns.Add();
                } 
                for(int i=1;i<=firstSheet.LastRowNum;i++)
                {
                    IRow workbookRow = firstSheet.GetRow(i);
                    List<string> stringList = new List<string>();
                    for (int j = 0; j < columnsCount; j++)
                    {
                        string cellValue = workbookRow.GetCell(j).StringCellValue;
                        stringList.Add(cellValue);
                    }
    
                    dt.Rows.Add(stringList.ToArray());
                }
                return dt;
            }
  • 相关阅读:
    20111013 18:32 女友刁钻无聊问题之标准答案
    20111013 17:40 学ACM有什么用
    typedef用法(1)
    深入C++的new(20111115 15:08 )
    用四个0算二十四点
    20111010 20:14 HDU 4021 (15数码)
    pku3020 Antenna Placement (解法1)
    C++箴言:理解typename的两个含义
    20110907 00:16 ubuntu 如何修改当前用户名
    vc6.0中添加msdn 20111105 11:52
  • 原文地址:https://www.cnblogs.com/Fred1987/p/11424963.html
Copyright © 2011-2022 走看看