首页 新闻 会员 周边

java用POI写Excel按列数据

0
悬赏园豆:5 [已解决问题] 解决于 2023-08-22 11:28

写第二行数据:
for (int i = 0; i < dictInfo.size(); i++) {
HSSFRow dataRow = sheet.createRow(i + 1);
dataRow.setHeight((short) (15 * 20));
JavaList l = (JavaList) dictInfo.getKeys();
String s = (String) l.get(i);
JavaList ll = (JavaList) dictInfo.get(s); //获取列数据
for (int j = 0; j < ll.size(); j++) {
Cell dataCell = dataRow.createCell(j);
HSSFFont dataFont = wb.createFont();
dataFont.setFontName("华文细黑");
dataFont.setFontHeightInPoints((short) 10);
dataFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
HSSFCellStyle dataStyle = wb.createCellStyle();
dataStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
dataStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
dataStyle.setFont(dataFont);
dataCell.setCellStyle(dataStyle);
dataCell.setCellValue(ll.get(j).toString());
}
}
dictInfo中数据:
{
"ordercode":["订单号0","订单号1"],
"tradeno":["交易号0","交易号1"],
"procode":["技术产品代码0","技术产品代码"],
"proname":["技术产品名称0","技术产品名称1"]
}

借你耳朵说爱你的主页 借你耳朵说爱你 | 菜鸟二级 | 园豆:213
提问于:2019-09-19 16:36
< >
分享
最佳答案
0

用二维数组解决问题:
int dictsize = dictInfo.size();
int listsize = ((JavaList) dictInfo.get(dictInfo.getKeys().get(0))).size();
//数据处理
String[][] parameter = new String[dictsize][listsize];
for (int i = 0; i < dictsize; i++) {
JavaList list = (JavaList) dictInfo.getKeys();
JavaList listInfo = (JavaList) dictInfo.get(list.get(i)); //获取列数据
for (int j = 0; j < listsize; j++) {
parameter[i][j] = listInfo.get(j).toString();
}
}
//写第二行……
for (int i = 0; i < listsize; i++) {
HSSFRow dataRow = sheet.createRow(i + 1);
dataRow.setHeight((short) (15 * 20));
for (int j = 0; j < dictsize; j++) {
Cell dataCell = dataRow.createCell(j);
HSSFFont dataFont = wb.createFont();
dataFont.setFontName("华文细黑");
dataFont.setFontHeightInPoints((short) 10);
dataFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
HSSFCellStyle dataStyle = wb.createCellStyle();
dataStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
dataStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
dataStyle.setFont(dataFont);
dataCell.setCellStyle(dataStyle);
dataCell.setCellValue(parameter[j][i]);
}
}

借你耳朵说爱你 | 菜鸟二级 |园豆:213 | 2019-09-24 11:48
其他回答(2)
0

listInfo和JavaList I 顺序反了吧,你这是逻辑错误吧,自己debug一下不就知道了

收获园豆:1
草莓罐头 | 园豆:204 (菜鸟二级) | 2019-09-19 16:46

刚刚上传错了代码,l是需要从dictInfo中取数据

支持(0) 反对(0) 借你耳朵说爱你 | 园豆:213 (菜鸟二级) | 2019-09-19 17:08
0

可以试试Free Spire.XLS for Java

将数组写入Excel教程:https://www.e-iceblue.cn/spirexls_java_data/insert-arrays-to-excel-in-java.html , 当然也能设置文字对齐方式和加粗

收获园豆:4
KeepLearning_88 | 园豆:231 (菜鸟二级) | 2020-05-22 13:57

jar属于付费版,这个企业没购买肯定是不能使用的

支持(0) 反对(0) 借你耳朵说爱你 | 园豆:213 (菜鸟二级) | 2020-05-22 14:21

@借你耳朵说爱你: 可用的哈,这个免费版只是对格式转换做了限制,正常生成、处理excel文档是没问题的

支持(0) 反对(0) KeepLearning_88 | 园豆:231 (菜鸟二级) | 2020-10-29 16:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册