dataList多级删除

    /// <summary>
    /// 多级删除
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnDel_Click(object sender, EventArgs e)
    {


        newsManage news = new newsManage();
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("cbkSelect");
            if (cbox.Checked == true)
            {
                int newsID = Convert.ToInt32(GridView1.DataKeys[i].Value);
                news.deleteNewsInfo(newsID);

            }
        }
        cbkSelectAll.Checked = false;
        bindData();
    }

private void exportDynamicExcel(List<Map<String, Object>> reportData, HttpServletResponse response) throws Exception { if (reportData == null || reportData.isEmpty()) { throw new RuntimeException("报表数据为空"); } // 获取所有可能的列(从第一条数据中提取) Map<String, Object> firstRow = reportData.get(0); List<String> headers = new ArrayList<>(firstRow.keySet()); // 设置响应头 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("银行协议报表_" + System.currentTimeMillis(), "UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); // 创建Excel写入器 ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build(); try { // 构建动态表头 List<List<String>> head = new ArrayList<>(); for (String header : headers) { head.add(Collections.singletonList(header)); } // 创建自定义合并策略 AbstractMergeStrategy mergeStrategy = new AbstractMergeStrategy() { @Override protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) { // 在第一行设置标题 if (cell.getRowIndex() == 0 && cell.getColumnIndex() == 0) { // 合并第一行的所有单元格作为标题 CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, headers.size() - 1); sheet.addMergedRegion(cellRangeAddress); // 设置标题样式 CellStyle cellStyle = sheet.getWorkbook().createCellStyle(); cellStyle.setAlignment(HorizontalAlignment.CENTER); cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); Font font = sheet.getWorkbook().createFont(); font.setBold(true); font.setFontHeightInPoints((short) 16); cellStyle.setFont(font); cell.setCellStyle(cellStyle); cell.setCellValue("银行协议履行统计表"); } } }; // 写入数据 WriteSheet writeSheet = EasyExcel.writerSheet("银行协议报表") .head(head) .registerWriteHandler(mergeStrategy) .build(); // 转换数据 List<List<Object>> dataList = new ArrayList<>(); // 添加标题行数据(只有第一列有内容,其他列为空) List<Object> titleData = new ArrayList<>(); titleData.add("银行协议履行统计表"); for (int i = 1; i < headers.size(); i++) { titleData.add(""); } dataList.add(titleData); // 添加数据行 for (Map<String, Object> rowData : reportData) { List<Object> row = new ArrayList<>(); for (String header : headers) { Object value = rowData.get(header); // 特殊处理执行率字段(转换为百分比) if ("累计执行率".equals(header) && value instanceof Number) { BigDecimal rate = value instanceof BigDecimal ? (BigDecimal) value : BigDecimal.valueOf(((Number) value).doubleValue()); value = rate.multiply(BigDecimal.valueOf(100)) .setScale(2, RoundingMode.HALF_UP) + "%"; } row.add(value); } dataList.add(row); } excelWriter.write(dataList, writeSheet); } finally { if (excelWriter != null) { excelWriter.finish(); } } } 这个的有银行协议履行统计表为什么不是标题,反而是在第二行?
最新发布
10-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值