• 读取 Excel 之 NPOI


            HSSFWorkbook hssfworkbook;
    
            void InitializeWorkbook(string path)
            {
                //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.
                //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added. 
                using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
                {
                    hssfworkbook = new HSSFWorkbook(file);
                }
            }
    
            DataSet ConvertToDataTable()
            {
                // ISheet sheet = hssfworkbook.GetSheetAt(0);
                DataSet dataSet1 = new DataSet();
                foreach (ISheet sheet in hssfworkbook)
                {
                    DataTable dt = new DataTable();
    
                    int columnCount = 0;
                    foreach (HSSFRow row in sheet)
                    {
                        columnCount = Math.Max(columnCount, row.LastCellNum);
                    }
    
                    for (int j = 0; j < columnCount; j++)
                    {
                        dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());
                    }
    
                    foreach (HSSFRow row in sheet)
                    {
                        DataRow dr = dt.NewRow();
                        for (int i = 0; i < columnCount; i++)
                        {
                            ICell cell = row.GetCell(i);
                            dr[i] = cell == null ? "" : cell.ToString();
                        }
                        dt.Rows.Add(dr);
                    }
    
                    dataSet1.Tables.Add(dt);
                }
                return dataSet1;
            }
    
            private void btnImport_Click(object sender, EventArgs e)
            {
                InitializeWorkbook(@"xlsA499ANN636412MO.xls");
                DataSet dataSet1 = ConvertToDataTable();
    
                dataGridView1.DataSource = dataSet1.Tables[0];
            }

    读取一个Excel 的多个 Sheet  并放到一个 DataSet 里。

    当写 byte[] 时,要使用 ms.ToArray(); 而不要使用 ms.GetBuffer();

    前者虽然稍慢,但不会在 Excel 文件中形成很多空字节。

  • 相关阅读:
    自定义Web框架
    Python四种实现单例模式的方法
    popup的简单应用举例
    前端框架之BootStrap的简单介绍
    前端之JQuery:JQuery扩展和事件
    前端之JQuery:JQuery文档操作
    前端之JQuery:JQuery属性操作
    前端之JQuery:JQuery基本语法
    MinerDB.java 数据库工具类
    MinerConstanits.java 常量类
  • 原文地址:https://www.cnblogs.com/z5337/p/3730585.html
Copyright © 2020-2023  润新知