poi导入数据到excel模版 如何选择下拉列表的值(数据有效性)

发布于 2021-11-24 00:10:15 字数 1666 浏览 885 评论 5

 

从数据库中导入数据到 现有的excel模版 并从浏览器输出下载

excel模版中有的列是下拉列表(即设置了数据有效性)如图

代码如下

myout=response.getOutputStream();
   //读出文件到i/o流
   InputStream fis = blob.getBinaryStream();//模版文件保存在数据库中
   HSSFWorkbook workbook = new HSSFWorkbook(fis);
    HSSFSheet sheet= workbook.getSheet("Sheet1");
    HSSFRow row = sheet.getRow(1);  
    HSSFCell cell = row.getCell(2);
    cell.setCellValue("汉族");//设置单位格类容为汉族

输出后的excel文件 报格式错误

点击是后文件是空的

正常的exce文件应该是这样

设置这种带数据有效性的列就会出现上面那样的情况,入若只设置普通单位格 则导出后的excel能正常显示

求教大神们 用poi往excel模版写数据时 碰到 有下拉列表(数据有效性)的单元格,代码中应该如何设置才能将数据正常导入并显示?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

情栀口红 2021-11-30 20:08:19

3q,用你说的这种写法,能正常写入下拉列表的值了

奢华的一滴泪 2021-11-30 20:07:40

HSSFCellUtil.getCell(row, 2).setCellValue("汉族"); 跟如下方式 有什么区别吗? HSSFCell cell = row.getCell(2); cell.setCellValue("汉族");

冬天旳寂寞 2021-11-30 17:06:26

测试发现问题的关键就在于cell的获取方式 (1)HSSFCell cell= row.getcell(2) (2)HSSFCell cell= HSSFCellUtil.getCell(row,2) 用第一种方式获取cell然后setCellValue("汉族") 导出后会错误 用第二种则不会,具体有什么不同就不清楚了

混吃等死 2021-11-30 12:24:25

回复
我猜你用 row.getCell 与 工具方法获取的区别在于,工具方法会在获取时判断要获取的对象是否为空若成立则create一个。自己看下源代码方法实现就好。你可以debug一下 row.getCell 是否为空?我建议像这种模板类型的POI写入,事先设定模板文件为无限行,然后再截取行(poi.breakrow).

为你鎻心 2021-11-30 07:34:20

你的需求已经非常明确了,只是往一个模板文件中写入数据(这个是POI擅长的)。怀疑是否你的写入方法有误以及序列化文件时是否有问题?我一般这样:HSSFRow row = HSSFCellUtil.getRow(rowNum, sheet);

HSSFCellUtil.getCell(row, 0).setCellValue("汉族"); sheet.getWorkbook().write(output);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文