zoukankan      html  css  js  c++  java
  • excel转化为table(去掉所有列值都为空的值一行,即返回有效值的DataTable)

    /// <summary>
    /// 去掉所有列值都为空的值一行,即返回有效值的DataTable
    /// </summary>
    /// <param name="stream"></param>
    /// <returns></returns>
    public static DataTable StreamToDataTableTrimTr(Stream stream)
    {
    //第一行一般为标题行。
    DataTable table = new DataTable();
    table.TableName = "经销商信息表";
    //根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档
    IWorkbook workbook = new XSSFWorkbook(stream);
    //HSSFWorkbook workbook = new HSSFWorkbook(File.Open(FilePath, FileMode.Open));//此处可以传文件的路径

    XSSFSheet sheet = (XSSFSheet)workbook.GetSheetAt(0);
    //获取excel的第一个sheet
    //获取Excel的最大行数
    int rowsCount = sheet.PhysicalNumberOfRows;
    //为保证Table布局与Excel一样,这里应该取所有行中的最大列数(需要遍历整个Sheet)。
    //为少一交全Excel遍历,提高性能,我们可以人为把第0行的列数调整至所有行中的最大列数。
    int colsCount = sheet.GetRow(0).PhysicalNumberOfCells;
    for (int i = 0; i < colsCount; i++)
    {
    table.Columns.Add(i.ToString());
    }
    for (int x = 0; x < rowsCount; x++)
    {
    if (sheet.GetRow(x) != null)
    {
    DataRow dr = table.NewRow();
    bool trIsNull = false;
    for (int y = 0; y < colsCount; y++)
    {
    string content = (null == sheet.GetRow(x).GetCell(y)) ? "" : sheet.GetRow(x).GetCell(y).ToString().Trim();
    if (!string.IsNullOrEmpty(content))
    trIsNull = true;
    dr[y] = content;
    }
    if (trIsNull)//一行中有一个值不为空,就新创建一行
    table.Rows.Add(dr);
    }
    }
    sheet = null;
    workbook = null;
    return table;
    }

  • 相关阅读:
    基于模糊Choquet积分的目标检测算法
    Android开发5:布局管理器2(表格布局TableLayout)
    JAVA WEB开发环境搭建教程
    linux下自助获取帮助
    dsp下基于双循环缓冲队列的视频采集和显示记录
    找工作笔试面试那些事儿(11)---数据库知识总结(2)范式
    【Todo】Zookeeper系列文章
    VC2010对Excel的操作
    hdu2647解题报告
    premake 在64位Ubuntu系统下编译32位GCC程序
  • 原文地址:https://www.cnblogs.com/ws-zpp/p/6136965.html
Copyright © 2011-2022 走看看