使用NPOI导入Excel注意日期格式和数字格式

//使用NPOI导入Excel
    public static DataTable importExcelToDataSetUsingNPOI(string FilePath, string fileName)
    {
        DataSet myDs = new DataSet();
        DataTable dt = new DataTable("mytable");

        myDs.Tables.Add(dt);
        DataRow myRow;
        myDs.Clear();

        try
        {
            using (Stream stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
            {
                HSSFWorkbook wk = new HSSFWorkbook(stream);

                ISheet sheet = wk.GetSheetAt(0);   //读取当前表数据 只读取第一个sheet

                int rowsint = sheet.LastRowNum;
                for (int y = 0; y <= rowsint; y++)
                {
                    //Execel第一行是标题,不是要导入数据库的数据
                    IRow row = sheet.GetRow(y);  //读取当前行数据
                    if (row != null)
                    {
                        int columnsint = row.LastCellNum;
                        if (y == 0)//第一行,标题
                        {
                            for (int m = 0; m < columnsint; m++)
                            {
                                dt.Columns.Add("F" + m.ToString(), System.Type.GetType("System.String"));
                            }
                        }
                        else
                        {
                            myRow = myDs.Tables["mytable"].NewRow();
                            for (int j = 0; j < columnsint; j++)
                            {
                                if (j == 11)
                                {
                                    
                                }
                                if (row.GetCell(j).CellType == CellType.NUMERIC)//数字类型
                                {
                                    string columnname = "F" + j.ToString();
                                    if (DateUtil.IsValidExcelDate(row.GetCell(j).NumericCellValue) && DateUtil.IsCellDateFormatted(row.GetCell(j)))
                                    {
                                        DateTime D = row.GetCell(j).DateCellValue;
                                        myRow[columnname] = (D.ToString().Length == 0 || D.ToString().Contains("#")) ? " " : D.ToString();
                                    }
                                    else
                                    {
                                        double strValue = row.GetCell(j).NumericCellValue;
                                        myRow[columnname] = (strValue.ToString().Length == 0 || strValue.ToString().Contains("#")) ? " " : strValue.ToString();
                                    }
                                }
                                else
                                {
                                    string strValue = row.GetCell(j).StringCellValue;
                                    string columnname = "F" + j.ToString();
                                    myRow[columnname] = (strValue.Length == 0 || strValue.Contains("#")) ? " " : strValue;
                                }
                            }
                            try
                            {
                                myDs.Tables["mytable"].Rows.Add(myRow);
                            }
                            catch { }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
        return myDs.Tables["mytable"];
    }

 

转载于:https://www.cnblogs.com/kennyliu/p/4554617.html

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值