自在猫先生 2022-07-29 09:13 采纳率: 62.9%
浏览 70
已结题

ASP.NET 查询数据库数据并写入到excel对应的表格中

问题遇到的现象和发生背景

代码没有抛出异常,但是数据没有写入到excel表格中

问题相关代码,请勿粘贴截图
 string fileDir = System.Web.HttpContext.Current.Server.MapPath("~/UI/BQ/Temp/212车型整车Audit评审报告.xlsx");
                //string fileDir = System.Web.HttpContext.Current.Server.MapPath("~/UI/BQ/Temp/测试报表.xlsx");
                
                FileStream file = new FileStream(fileDir, FileMode.Open, FileAccess.Read);
                //创建HSSFWorkbook对象
                XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
                //创建HSSFSheet对象
                NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);
                //ISheet sheet = hssfworkbook.GetSheet("sheet1");
                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
                MemoryStream ms = new MemoryStream();
                DataTable dataTable;
                string sql=“sql语句”;
                CustomSqlSection customSqlSection = Gateway.Default.FromCustomSql(sql);
                dataTable = customSqlSection.ToDataSet().Tables[0];

                IRow row = sheet.CreateRow(0);
                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    ICell cell = row.CreateCell(i);
                    cell.SetCellValue(dataTable.Columns[i].ColumnName);
                }

                //写入数据到excel
                for (int i = 2; i < dataTable.Rows.Count; i++)
                {
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["VIN码"].ToString());
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["部位"].ToString());
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["CAR_TYPE_CODE"].ToString());
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["问题描述"].ToString());
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["图片"].ToString());
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["问题等级"].ToString());
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["责任部门"].ToString());
                    row.GetCell(i).SetCellValue(dataTable.Rows[i - 2]["备注"].ToString());

                }
                //获取地址栏ip地址
                string url = HttpContext.Current.Request.Url.Host;
               
                sheet.ForceFormulaRecalculation = true;  //强制计算Excel中的公式
                hssfworkbook.Write(ms);
                ms.Flush();
                ms.Seek(0, SeekOrigin.Begin);
                string Rstr = fileDir.Substring(fileDir.IndexOf("UI"));
                fileDir = url + ":"+ Rstr;

                //返回URL地址
               return fileDir;
运行结果及报错内容

没有报错 没有异常

我的解答思路和尝试过的方法

修改查询出来的列 起别名,与excel表格中的列对应。

我想要达到的结果

查询出来的数据 并写入excel对应的表格中

img

  • 写回答

1条回答 默认 最新

  • 石岩Maple 2022-07-29 09:21
    关注

    img


    你只创建了一个行,下面对dataTable进行循环的时候也要创建行的,你始终在第一行做循环

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月6日
  • 已采纳回答 7月29日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置