NPOI 读取EXCEL(2003,2007)并转换为DataTable


private void button1_Click(object sender, EventArgs e)
{

    var dt = new DataTable();
    using (OpenFileDialog openFile = new OpenFileDialog())
    {
        if (openFile.ShowDialog() == DialogResult.OK)
        {
            string fileName = openFile.FileName;
            using (FileStream fs = File.OpenRead(fileName))
            {
                string extension = System.IO.Path.GetExtension(fileName).ToLower();
                IWorkbook workBook;
                switch (extension)
                {
                    case ".xlsx":
                        workBook = new XSSFWorkbook(fs);
                        break;
                    case ".xls":
                        workBook = new HSSFWorkbook(fs);
                        break;
                    default:
                        throw new Exception("格式不正确");
                }

                ISheet sheet = workBook.GetSheetAt(0);

                // 表头
                IRow header = sheet.GetRow(sheet.FirstRowNum);
                List<int> columns = new List<int>();
                for (int i = 0; i < header.LastCellNum; i++)
                {
                    object obj = GetCellValue(header.GetCell(i));
                    {
                        var col = new DataColumn("Columns" + i.ToString());
                        col.Caption = obj.ToString();
                        dt.Columns.Add(col);
                    }
                    columns.Add(i);
                }

                // 数据  
                for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++)
                {
                    DataRow dr = dt.Rows.Add();
                    foreach (int j in columns)
                    {
                        dr[j] = GetCellValue(sheet.GetRow(i).GetCell(j));

                    }

                    dataGridView1.DataSource = dt;
                }
            }

        }
    }
}
GarsonZhang www.yesdotnet.com

 

  /// <summary>  
/// 获取单元格类型(xlsx)  
/// </summary>  
/// <param name="cell"></param>  
/// <returns></returns>  
private object GetCellValue(ICell cell)
{
    if (cell == null)
        return null;
    switch (cell.CellType)
    {
        case CellType.Blank: //BLANK:  
            return null;
        case CellType.Boolean: //BOOLEAN:  
            return cell.BooleanCellValue;
        case CellType.Numeric: //NUMERIC:  
            return cell.NumericCellValue;
        case CellType.String: //STRING:  
            return cell.StringCellValue;
        case CellType.Error: //ERROR:  
            return cell.ErrorCellValue;
        case CellType.Formula: //FORMULA:  
        default:
            return "=" + cell.CellFormula;
    }
}
GarsonZhang www.yesdotnet.com

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:Devexpress GridControl GridView添加右键菜单
下一篇:C# 7.0 - C# 7.3 中的新增功能
评论列表

发表评论

评论内容
昵称:
关联文章

NPOI 读取EXCEL(2003,2007)转换DataTable
NPOI生成Excel文件时设置一整列文本类型
C# NPOI导出excel绑定列的下拉数据源
C# 根据DataTable 转换成JSON 文本字符串数据
JQuery将form表单转换json,提交后台处理
Python读取excel xlrd读取xlsx报错:Excel xlsx file; not supported
excel2007直接打开文件空白,需要菜单打开
windows Service 读取app.config AppSettings
在C# 中将byte转换int和int转换byte
非常规Excel模板导入导出
Excel文件数据导入和导出功能实现
C#类型转换,对象转换
C# 金额转换,金额数字转换人民币大写
C# 利用 SharpZipLib 对多个文本字符串进行多文件打包RAR或ZIP进行下载
C# 读取txt文件生成Word文档
EF 值转换
C# 解析加载读取XML文件的正确姿势
Excel自定义格式千分符
C#读取被进程占用的文件,只读模式打开文件
对象和Datatable互转

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码