填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作。

报表导出为excel时,润乾导出excel包默认情况下不对excel单元格属性进行特殊修改,当导出的报表为填报表时,报表中设定的单元格可写属性并不能在导出后的excel中体现,也就是说无论是可写还是非可写的单元格都会在excel中变成普通单元格,而恰恰一些客户在导出excel后会对excel进行修改然后再将excel导入报表,这时候就必然需要导出后的excel中单元格的可写非可写属性要和报表中的一致,此时就需要导出excel的报表中的非可写单元格在excel中锁定。

解决思路:

通过Java类来操作excel文件每个单元格的属性是很容易实现的,我们这里用到了jxl这个java操作excel类来实现功能。

思路:不使用润乾提供的导出excel方法,直接通过自定义按钮调用java代码实现对导出非可写单元格的锁定:

1.在导出excel的过程中,要先遍历报表中的所有单元格取得所有数据。

2.在这个遍历过程中做一个操作,将遍历到的可写单元格存在一个数组里。

3 .遍历完后用润乾导出excel类导出excel。

4 .通过jxl类操作excel文件,从第二步中建立的数组中取出可写单元格,并设置这些单元格不锁定,其他的单元格设置为锁定。

下面列出部分代码

//生成Excel文件

String saveFile = request.getRealPath(“/reportFiles/”) +“/”+ reportFile +“.xls”;

ExcelReport eReoprt =newExcelReport();

eReoprt.export(iReport);

FileOutputStream fos =newFileOutputStream(saveFile);

eReoprt.saveTo(fos);

fos.close();

//jxl锁定单元格====================================================================

Workbook jxlwb=null;

WritableWorkbook book=null;

try{

jxlwb=Workbook.getWorkbook(newFile(saveFile));

book=Workbook.createWorkbook(newFile(saveFile),jxlwb);

WritableSheet sheet = book.getSheet(0);

for(inti=0;i

String[] point=(String[])cellList.get(i);

introwNum =Integer.parseInt(point[0].trim())-1;

intcolNum =Integer.parseInt(point[1].trim())-1;

//获取单元格对象

WritableCell wCell = sheet.getWritableCell(colNum, rowNum);

CellFormat cf = wCell.getCellFormat();

WritableCellFormat wcf =newWritableCellFormat(cf);

//去除可写单元格锁定状态

wcf.setLocked(false);

wCell.setCellFormat(wcf);

}

//打开sheet保护

sheet.getSettings().setProtected(true);

book.write();

}catch(Exception e){

}finally{

book.close();

jxlwb.close();

}

out.println(“Excel文件生成结束,文件保存在:”+ saveFile);

下面用个例子检验一下效果:

上图是报表在复杂报表设计" target="_blank" class="quieeLink1">设计器中的样子,A1、C1单元格是可写的,其他单元格是不可写的。打开经上面的代码导出的excel

可以看出A1单元格是可修改的,当选择A2单元格时,会弹出一个提示,说明这个单元格是受保护的,不能修改的。

java导出excel锁定状态_填报表导出excel后不可写的单元格处于锁定状态相关推荐

  1. 填报表导出excel后不可写的单元格处于锁定状态

     填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对excel单 ...

  2. 填报表导出excel非可写单元格锁定问题

     问题描述: 填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对 ...

  3. 行式填报表导入excel数据直接入库

     由于行式填报在导入excel的数据量比较大的时候,页面加载数据会很慢,在这种情况下可以采取后台直接导入数据库的方法,实例如下: package example; import java.sql. ...

  4. excel减法函数_会计小白的EXCEL学习笔记

    随着信息化的发展,原本浑浑噩噩想着混吃等死的二胎妈妈的我,经过这段时间设计合同台账,突然觉得很丧,妥妥的强烈危机感啊~于是乎下定决心得加快提升自己了. 那么对于财会行业,excel是必备技能,一方面可 ...

  5. excel函数大全_让你的EXCEL工作效率翻倍的函数大全

    详细的函数说明和应用实例可查看我上传的<EXCEL快速学习教程视频>对应各类函数教程 常用函数大全 使用函数:公式选项卡>函数库>插入函数.常用函数.最近使用函数.财务.逻辑. ...

  6. POI导出excel--设置字体,颜色,行高自适应,列宽自适应,锁住单元格,合并单元格

    1. 前言 poi框架可以支持我们在java代码中, 将数据导出成excel , 在上一篇 如何使用POI导出excel表格,以及处理浏览器无法识别下载文件的问题 中已经详细的进行了介绍 , 但是实际 ...

  7. python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】

    相关文章: python处理Excel实现自动化办公教学(含实战)[一] python处理Excel实现自动化办公教学(含实战)[二] python处理Excel实现自动化办公教学(数据筛选.公式操作 ...

  8. 设置ALV单元格可编辑状态

    在使用ALV显示列表的过程中,我们可以使用IT_FIELDCAT参数设置某一个字段的可编辑状态.但是,要设置具体的单元格的可编辑状态对于对ALV不是很了解的人来说是一个头大的问题. 具体单元格可编辑状 ...

  9. python创建工作簿_创建工作簿、工作表和写入单元格

    ---------------------------------------------------------------- 学完本课程可继续巩固篇:https://edu.51cto.com/c ...

  10. 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)

    关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并) 首先,关于poi解析表格先阅读一篇他人的博客 使用poi读取word2007(.docx)中的复杂表格 ...

最新文章

  1. Ext结合DWR的关键代码(运行成功的DWRProxy)
  2. CIR:2020年全球数据中心应用AOC市场达$42亿
  3. 2-4. BCD解密(10)
  4. python open word_使用Python在OpenOffice / Microsoft Word中格式化输出
  5. java web 项目打成war包部署到服务器上
  6. favicon.ico--网站标题小图片二三事
  7. 重温6 ListView相关|单位dp/sp
  8. html代码 打开本地文件,打开本地HTML文件
  9. MFC中使用FLASH相关
  10. 【数据处理】reshape2包
  11. 知名厂商设备图标库大全
  12. Linux性能测试(UnixBench)(bench)一键脚本
  13. java 解析json数据流的几种方式
  14. 网络故障排查的思路和方法
  15. VS2019 MFC模式下如何调用控制台并用cprintf在控制台打印
  16. V4L2视频驱动程序开发之驱动方法poll 和 应用程序select
  17. debian 6.0.5下RT5370无线网卡驱动安装
  18. 硬齿面齿轮减速机与软齿面的区别
  19. Linux下载文件命令wget的一些用法
  20. Java中Thread详解(一篇就够了)

热门文章

  1. 一款PC端抖音去水印工具V1.86
  2. gif动图怎么制作?怎么截取视频做成gif动图?
  3. Indented Inventory BOM如何转为最终的单层采购BOM
  4. 扫外部二维码进入小程序,并且在小程序内获取二维码链接
  5. 使用burpsuite对手机端APP抓包
  6. uni-app如何发送请求调用接口
  7. 数据管理与数据库 大学课程_根据数据,这50种最好的免费在线大学课程
  8. oracle按月统计按季度统计,Oracle数据库按月统计(候,旬,月,季,年)
  9. python覆盖写文件_python写文件时覆盖原来的代码方法实例
  10. 基于TI DRV8424驱动步进电机实现调速和行程控制