コード例 #1
0
        /// <summary>
        /// 打开EXCEL并获取其内容
        /// </summary>
        /// <param name="reporttype">导入EXCEL时的类型(0:批量成本报表功能使用  1:BOM物料明细使用 2:毛利润报表使用)</param>
        /// <param name="fileAddress"></param>
        /// <returns></returns>
        private DataTable OpenExcelToDataTable(string reporttype, string fileAddress)
        {
            IWorkbook wk;
            //根据reporttype判断所导入的列数
            int colnum;
            //定义TEMPDT
            var dt = new DataTable();

            //创建表标题-根据reporttype不同而改变
            switch (reporttype)
            {
            case "0":
                dt = dbList.ImportExcelTempdt();
                break;

            case "1":
                dt = dbList.ImportBomExcelTempdt();
                break;

            default:
                dt = dbList.ImportProfitExcelTempdt();
                break;
            }
            //dt = reporttype == "0" ? dbList.ImportExcelTempdt() : dbList.ImportBomExcelTempdt();

            using (var fsRead = File.OpenRead(fileAddress))
            {
                wk = new XSSFWorkbook(fsRead);
                //获取第一个sheet
                var sheet = wk.GetSheetAt(0);
                //获取第一行
                //var hearRow = sheet.GetRow(0);
                //定义列数
                colnum = reporttype == "0" ? 6 : 2;

                //创建完标题后,开始从第二行起读取对应列的值
                for (var r = 1; r <= sheet.LastRowNum; r++)
                {
                    var result = false;
                    var dr     = dt.NewRow();
                    var row    = sheet.GetRow(r);
                    if (row == null)
                    {
                        continue;
                    }

                    for (var j = 0; j < colnum; j++)
                    {
                        //循环获取行中的单元格
                        var cell      = row.GetCell(j);
                        var cellValue = GetCellValue(cell);
                        if (cellValue == string.Empty)
                        {
                            continue;
                        }
                        else
                        {
                            dr[j] = cellValue;
                        }

                        //全为空就不取
                        if (dr[j].ToString() != "")
                        {
                            result = true;
                        }
                    }

                    if (result)
                    {
                        //把每行增加到DataTable
                        dt.Rows.Add(dr);
                    }
                }
            }
            return(dt);
        }