/// <summary>
        ///  更改Excel工作簿内容-导出按钮导出使用
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para)
        {
            //获取工作簿
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);
                //设置日期
                SetReportDate(sheet, 1, 6, para.StartTime.Value, para.ReportType);

                if (listExport == null || listExport.Count == 0)
                {
                    GetData(para);
                }

                //获取导出日期数据
                if (listExport != null)
                {
                    for (int i = 0; i < listExport.Count; i++)
                    {
                        SetValue(sheet, i + 3, 0, listExport[i].CalculTime);                                    //数据日期
                        SetValue(sheet, i + 3, 1, listExport[i].LineSum.ToString("F2"));                        //总交通量(万辆)
                        SetValue(sheet, i + 3, 2, (double.Parse(listExport[i].SumGrow)).ToString("F2"));        //同比增幅(%)
                        SetValue(sheet, i + 3, 3, listExport[i].LineEnSum.ToString("F2"));                      //进京交通量(万辆)
                        SetValue(sheet, i + 3, 4, listExport[i].LineExSum.ToString("F2"));                      //出京交通量(万辆)
                        SetValue(sheet, i + 3, 5, listExport[i].ExEnPer.ToString("F2"));                        //出进京比
                        SetValue(sheet, i + 3, 6, listExport[i].SmaCarFeeNum.ToString("F2"));                   //小型客车交通量(万辆)
                        SetValue(sheet, i + 3, 7, (double.Parse(listExport[i].SmaCarCompGrow)).ToString("F2")); //同比增幅(%)
                        SetValue(sheet, i + 3, 8, listExport[i].SmaCarFee.ToString("F2"));                      //小型客车免收通行费(万元)
                        SetValue(sheet, i + 3, 9, listExport[i].ChagSumNum.ToString("F2"));                     //收费车辆(万辆)
                    }
                }
            }
            return(readworkbook);
        }
Пример #2
0
        /// <summary>
        /// 加载工作簿
        /// </summary>
        /// <param name="fileName">文件名称,绝对路径</param>
        protected override void LoadWorkbook(string fileName)
        {
            FileStream fs = File.OpenRead(fileName);

            switch (ExcelFormat)
            {
            case ExcelFormat.Xls:
                _workbook = new HSSFWorkbook(fs);
                break;

            case ExcelFormat.Xlsx:
                _workbook = new XSSFWorkbook(fs);
                break;

            default:
                throw new Exception("未知 Excel 格式文件");
            }
            fs.Close();

            // 读取当前表数据
            var sheetNum = _workbook.NumberOfSheets;

            for (int i = 0; i < sheetNum; i++)
            {
                ISheet sheet     = _workbook.GetSheetAt(i);
                var    worksheet = new NpoiWorkSheet(sheet);
                WorkSheets.Add(worksheet);
            }
        }
Пример #3
0
        /// <summary>
        /// 更改Excel工作簿内容
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para)
        {
            //获取工作簿
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);

                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //获取导出日期数据
                    List <RP_EnEx> pAADTList = db.RP_EnEx.Where(a => a.CalcuTime == para.StartTime && a.StaType == para.StationType).ToList();

                    if (pAADTList != null && pAADTList.Count > 0)
                    {
                        RP_EnEx pInfo = pAADTList.First();

                        //高速
                        SetValue(sheet, 5, 1, pInfo.EnSmaCar.ToString()); //小型客车
                        SetValue(sheet, 5, 2, pInfo.EnOthCar.ToString()); //其他客车
                        SetValue(sheet, 5, 3, pInfo.EnTruk.ToString());   //高速入境货车数
                        SetValue(sheet, 5, 4, 0);                         //pInfo.EnGre.ToString());//绿色通道数
                    }
                }
            }
            return(readworkbook);
        }
        /// <summary>
        ///  更改Excel工作簿内容
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para)
        {
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);

                string title = string.Empty;
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    var holidayName = db.OT_Dic.Where(a => a.Id == para.HolidayId).Select(a => a.Name).ToList();
                    if (holidayName != null && holidayName.Count > 0)
                    {
                        title = string.Format("{0}年“{1}”黄金周京津塘高速公路交通量及客运情况统计表", ((DateTime)para.EndTime).Year, holidayName[0].ToString());
                    }
                    SetValue(sheet, 0, 0, title);
                }

                if (listExport != null && listExport.Count > 0)
                {
                    for (int i = 0; i < listExport.Count; i++)
                    {
                        SetValue(sheet, i + 4, 0, listExport[i].CalcuTime);
                        SetValue(sheet, i + 4, 1, listExport[i].EnTra == null ? "" : listExport[i].EnTra.ToString());
                        SetValue(sheet, i + 4, 2, listExport[i].EnCar == null ? "" : listExport[i].EnCar.ToString());
                        SetValue(sheet, i + 4, 3, listExport[i].EnTrav == null ? "0.00" : listExport[i].EnTrav.Value.ToString("F2"));
                        SetValue(sheet, i + 4, 4, listExport[i].ExTra == null ? "" : listExport[i].ExTra.ToString());
                        SetValue(sheet, i + 4, 5, listExport[i].ExCar == null ? "" : listExport[i].ExCar.ToString());
                        SetValue(sheet, i + 4, 6, listExport[i].ExTrav == null ? "0.00" : listExport[i].ExTrav.Value.ToString("F2"));
                    }
                    SetValue(sheet, listExport.Count + 4, 0, string.Format("统计人:{0}", qModel.CrtBy));;
                }
            }
            return(readworkbook);
        }
        /// <summary>
        ///  更改Excel工作簿内容
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para)
        {
            //获取工作簿
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);

                string title = string.Empty;
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    var holidayName = db.OT_Dic.Where(a => a.Id == para.HolidayId).Select(a => a.Name).ToList();
                    if (holidayName != null && holidayName.Count > 0)
                    {
                        title = string.Format("{0}年{1}假期进出京交通流量表(北京段)", ((DateTime)para.EndTime).Year, holidayName[0].ToString());
                    }
                    SetValue(sheet, 0, 0, title);
                }
                if (listExport != null)
                {
                    for (int i = 0; i < listExport.Count; i++)
                    {
                        SetValue(sheet, i + 3, 0, listExport[i].DataDate);
                        SetValue(sheet, i + 3, 1, listExport[i].LineEnSum == null ? "" : listExport[i].LineEnSum.ToString());
                        SetValue(sheet, i + 3, 2, listExport[i].LineExSum == null ? "" : listExport[i].LineExSum.ToString());
                        SetValue(sheet, i + 3, 3, listExport[i].Total);
                    }
                }
            }
            return(readworkbook);
        }
Пример #6
0
        /// <summary>
        /// 读取Execl
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="sum">sheet数量</param>
        /// <returns></returns>
        public List <DataTable> LoadExcel(string path, int sum)
        {
            Stream           fs        = System.IO.File.OpenRead(path);
            List <DataTable> tableList = new List <DataTable>();

            NPOI.SS.UserModel.IWorkbook wb = WorkbookFactory.Create(fs);
            for (int i = 0; i < sum; i++)
            {
                NPOI.SS.UserModel.ISheet sheet = wb.GetSheetAt(i);
                DataTable dt = RenderFromExcel(sheet);
                tableList.Add(dt);
            }
            return(tableList);
        }
        /// <summary>
        /// 预测导出--如果需要将入出口数据进行区分,则分别放在两个list的集合中,若不需区分,则将数据放入list1中,list2为空即可
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <param name="list1"></param>
        /// <param name="list2"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para, List <Common.ViewModels.IReportViewModel> list1, List <Common.ViewModels.IReportViewModel> list2)
        {
            //获取工作簿
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);
                //设置日期
                SetReportDate(sheet, 0, 13, DateTime.Parse(DateTime.Now.ToShortDateString()), para.ReportType);
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    if (list1 != null && list1.Count > 0)
                    {
                        ForecastEnExViewModel pInfo = list1.First() as ForecastEnExViewModel;

                        //高速
                        SetValue(sheet, 5, 1, pInfo.EnSmaCar.ToString()); //小型客车
                        SetValue(sheet, 5, 2, pInfo.EnOthCar.ToString()); //其他客车
                        SetValue(sheet, 5, 3, pInfo.EnTruk.ToString());   //货车数
                        SetValue(sheet, 5, 4, pInfo.EnGre.ToString());    //绿色通道数

                        SetValue(sheet, 5, 5, pInfo.ExSmaCar.ToString()); //小型客车
                        SetValue(sheet, 5, 6, pInfo.ExOthCar.ToString()); //其他客车
                        SetValue(sheet, 5, 7, pInfo.ExTruk.ToString());   //货车数
                        SetValue(sheet, 5, 8, 0);                         //pInfo.EnGre.ToString());//绿色通道数

                        //普通
                        SetValue(sheet, 5, 9, 0);  //小型客车
                        SetValue(sheet, 5, 10, 0); //其他客车
                        SetValue(sheet, 5, 11, 0); //高速入境货车数
                        SetValue(sheet, 5, 12, 0); //绿色通道数

                        SetValue(sheet, 5, 13, 0); //小型客车
                        SetValue(sheet, 5, 14, 0); //其他客车
                        SetValue(sheet, 5, 15, 0); //高速入境货车数
                        SetValue(sheet, 5, 16, 0); //绿色通道数
                    }
                }
            }
            return(readworkbook);
        }
Пример #8
0
        /// <summary>
        /// 预测导出--如果需要将入出口数据进行区分,则分别放在两个list的集合中,若不需区分,则将数据放入list1中,list2为空即可
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <param name="list1"></param>
        /// <param name="list2"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para, List <Common.ViewModels.IReportViewModel> list1, List <Common.ViewModels.IReportViewModel> list2)
        {
            //获取工作簿
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);

                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    if (list1 != null && list1.Count > 0)
                    {
                        ForecastEnExViewModel pInfo = list1.First() as ForecastEnExViewModel;

                        //高速入境
                        SetValue(sheet, 5, 1, pInfo.EnSmaCar.ToString()); //小型客车
                        SetValue(sheet, 5, 2, pInfo.EnOthCar.ToString()); //其他客车
                        SetValue(sheet, 5, 3, pInfo.EnTruk.ToString());   //高速入境货车数
                        SetValue(sheet, 5, 4, 0);                         //pInfo.EnGre.ToString());//绿色通道数
                    }
                }
            }
            return(readworkbook);
        }
Пример #9
0
        /// <summary>
        /// 修改excel工作簿
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para)
        {
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);

                string title = string.Empty;
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    var holidayName = db.OT_Dic.Where(a => a.Id == para.HolidayId).Select(a => a.Name).ToList();
                    if (holidayName != null && holidayName.Count > 0)
                    {
                        title = string.Format("天津市高速公路支队{0}年{1}假期重点收费站流量表(出口+入口)", ((DateTime)para.EndTime).Year, holidayName[0].ToString());
                    }
                    SetValue(sheet, 0, 0, title);
                }
                if (listExport != null)
                {
                    //计算查询天数
                    int count = (para.EndTime.Value - para.StartTime.Value).Days + 1;
                    if ((para.EndTime.Value - para.StartTime.Value).Days + 1 > 15)
                    {
                        count = 15;//最多可查询15天
                    }
                    for (int i = 0; i < listExport.Count; i++)
                    {
                        if (count > 0)
                        {
                            SetValue(sheet, i + 45, 3, listExport[i].Date1);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 3, para.StartTime.Value.AddDays(0).ToString("M月d日"));
                            }
                        }
                        if (count > 1)
                        {
                            SetValue(sheet, i + 45, 4, listExport[i].Date2);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 4, para.StartTime.Value.AddDays(1).ToString("M月d日"));
                            }
                        }
                        if (count > 2)
                        {
                            SetValue(sheet, i + 45, 5, listExport[i].Date3);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 5, para.StartTime.Value.AddDays(2).ToString("M月d日"));
                            }
                        }
                        if (count > 3)
                        {
                            SetValue(sheet, i + 45, 6, listExport[i].Date4);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 6, para.StartTime.Value.AddDays(3).ToString("M月d日"));
                            }
                        }
                        if (count > 4)
                        {
                            SetValue(sheet, i + 45, 7, listExport[i].Date5);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 7, para.StartTime.Value.AddDays(4).ToString("M月d日"));
                            }
                        }
                        if (count > 5)
                        {
                            SetValue(sheet, i + 45, 8, listExport[i].Date6);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 8, para.StartTime.Value.AddDays(5).ToString("M月d日"));
                            }
                        }
                        if (count > 6)
                        {
                            SetValue(sheet, i + 45, 9, listExport[i].Date7);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 9, para.StartTime.Value.AddDays(6).ToString("M月d日"));
                            }
                        }
                        if (count > 7)
                        {
                            SetValue(sheet, i + 45, 10, listExport[i].Date8);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 10, para.StartTime.Value.AddDays(7).ToString("M月d日"));
                            }
                        }
                        if (count > 8)
                        {
                            SetValue(sheet, i + 45, 11, listExport[i].Date9);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 11, para.StartTime.Value.AddDays(8).ToString("M月d日"));
                            }
                        }
                        if (count > 9)
                        {
                            SetValue(sheet, i + 45, 12, listExport[i].Date10);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 12, para.StartTime.Value.AddDays(9).ToString("M月d日"));
                            }
                        }
                        if (count > 10)
                        {
                            SetValue(sheet, i + 45, 13, listExport[i].Date11);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 13, para.StartTime.Value.AddDays(10).ToString("M月d日"));
                            }
                        }
                        if (count > 11)
                        {
                            SetValue(sheet, i + 45, 14, listExport[i].Date12);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 14, para.StartTime.Value.AddDays(11).ToString("M月d日"));
                            }
                        }
                        if (count > 12)
                        {
                            SetValue(sheet, i + 45, 15, listExport[i].Date13);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 15, para.StartTime.Value.AddDays(12).ToString("M月d日"));
                            }
                        }
                        if (count > 13)
                        {
                            SetValue(sheet, i + 45, 16, listExport[i].Date14);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 16, para.StartTime.Value.AddDays(13).ToString("M月d日"));
                            }
                        }
                        if (count > 14)
                        {
                            SetValue(sheet, i + 45, 17, listExport[i].Date15);
                            if (i == 0)
                            {
                                SetValue(sheet, 2, 17, para.StartTime.Value.AddDays(14).ToString("M月d日"));
                            }
                        }

                        SetValue(sheet, i + 45, 3 + count, listExport[i].Total);
                    }
                }
            }
            return(readworkbook);
        }
Пример #10
0
        /// <summary>
        /// 将excel文件内容读取到DataTable数据表中
        /// </summary>
        /// <param name="fileName">文件完整路径名</param>
        /// <param name="sheetName">指定读取excel工作薄sheet的名称</param>
        /// <param name="isFirstRowColumn">第一行是否是DataTable的列名:true=是,false=否</param>
        /// <returns>DataTable数据表</returns>
        public static DataTable ReadExcelToDataTable(string fileName, string sheetName = null, bool isFirstRowColumn = true)
        {
            //定义要返回的datatable对象
            DataTable data = new DataTable();

            //excel工作表
            NPOI.SS.UserModel.ISheet sheet = null;
            //数据开始行(排除标题行)
            int startRow = 0;

            try
            {
                if (!File.Exists(fileName))
                {
                    return(null);
                }
                //根据指定路径读取文件
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                //根据文件流创建excel数据结构
                NPOI.SS.UserModel.IWorkbook workbook = NPOI.SS.UserModel.WorkbookFactory.Create(fs);
                //IWorkbook workbook = new HSSFWorkbook(fs);
                //如果有指定工作表名称
                if (!string.IsNullOrEmpty(sheetName))
                {
                    sheet = workbook.GetSheet(sheetName);
                    //如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheet
                    if (sheet == null)
                    {
                        sheet = workbook.GetSheetAt(0);
                    }
                }
                else
                {
                    //如果没有指定的sheetName,则尝试获取第一个sheet
                    sheet = workbook.GetSheetAt(0);
                }
                if (sheet != null)
                {
                    NPOI.SS.UserModel.IRow firstRow = sheet.GetRow(0);
                    //一行最后一个cell的编号 即总的列数
                    int cellCount = firstRow.LastCellNum;
                    //如果第一行是标题列名
                    if (isFirstRowColumn)
                    {
                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                        {
                            NPOI.SS.UserModel.ICell cell = firstRow.GetCell(i);
                            if (cell != null)
                            {
                                string cellValue = cell.StringCellValue;
                                if (cellValue != null)
                                {
                                    DataColumn column = new DataColumn(cellValue);
                                    data.Columns.Add(column);
                                }
                            }
                        }
                        startRow = sheet.FirstRowNum + 1;
                    }
                    else
                    {
                        startRow = sheet.FirstRowNum;
                    }
                    //最后一列的标号
                    int rowCount = sheet.LastRowNum;
                    for (int i = startRow; i <= rowCount; ++i)
                    {
                        NPOI.SS.UserModel.IRow row = sheet.GetRow(i);
                        if (row == null)
                        {
                            continue;              //没有数据的行默认是null       
                        }
                        DataRow dataRow = data.NewRow();
                        for (int j = row.FirstCellNum; j < cellCount; ++j)
                        {
                            if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null
                            {
                                dataRow[j] = row.GetCell(j).ToString();
                            }
                        }
                        data.Rows.Add(dataRow);
                    }
                }
                return(data);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }