zoukankan      html  css  js  c++  java
  • 读取 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 文件中形成很多空字节。

  • 相关阅读:
    Dockerfile-ADD命令-转载
    华为云上上传镜像到在线镜像仓库
    什么是4D(DRG、DLG、DOM、DEM)数据
    视频对接资料
    OpenLayer改变切片地图的样式-滤镜效果
    Docker-挂载宿主机目录到容器
    RTSP在线视频环境搭建2-海康摄像头
    配置自己风格的Clang-Format-Xcode
    GCDAsyncUdpSocket的使用
    react-native component function
  • 原文地址:https://www.cnblogs.com/z5337/p/3730585.html
Copyright © 2011-2022 走看看