Java 在apache poi中的每10项之后插入新行
我有一个Java 在apache poi中的每10项之后插入新行,java,apache-poi,Java,Apache Poi,我有一个列表,其中包含的元素很少,我想使用ApachePOI将这些元素写入Excel工作表。我还想在每10项之后将数据放在单独的行中。例如,“我的列表”包含以下元素: ["aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","jjj","kkk","lll","mmm","nnn","ooo","ppp","qqq","rrr","sss","ttt",....] 我想要以下格式的excel表格 col1, col2, co
列表
,其中包含的元素很少,我想使用ApachePOI将这些元素写入Excel工作表。我还想在每10项之后将数据放在单独的行中。例如,“我的列表”包含以下元素:
["aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","jjj","kkk","lll","mmm","nnn","ooo","ppp","qqq","rrr","sss","ttt",....]
我想要以下格式的excel表格
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10
row1 : aaa, bbb, ccc, ddd, eee, fff, ggg, hhh, iii, jjj
row2 : kkk, lll, mmm, nnn, ooo, ppp, qqq, rrr, sss, ttt
这可以通过ApachePOI实现吗
我试过以下方法(我的循环非常糟糕)
public void csvUpdateWorksheet1(字符串文件名、字符串表名、列表数据){
HSSFWorkbook=新的HSSFWorkbook();
HSSFSheet sheet=工作簿.createSheet(sheetName);
logger.info(data.size());
int rownum=0;
对于(int i=0;i
int rownum=0;
int colnum=0;
int itemsPerRow=20;
字符串outfilename=“test.xls”;
列表值=新的ArrayList();
//添加一些值。。。
HSSFWorkbook=新的HSSFWorkbook();
HSSFSheet sheet=book.createSheet(
HSSFRow行=sheet.getRow(rownuw);
用于(字符串s:值){
HSSFCell cell=row.createCell(colnum);
cell.setCellValue(Integer.parseInt(id));
colnum=(列+1)%itemsPerRow;
if(colnum==0){
rownum++;
行=sheet.getRow(rownuw);
}
}
文件f=新文件(“src/main/resources/films.xls”);
FileOutputStream fos=新的FileOutputStream(f);
书。写(fos);
fos.flush();
fos.close();
在当前行中创建10个单元格后,需要创建下一行
int r = 0;
int c = 0;
int maxCellsPerRow = 10;
Row row = sheet.createRow(r);
for (String str : data)
{
Cell cell = row.createCell(c);
cell.setCellValue(str);
c++;
// Create and advance to next row if needed.
if (c >= maxCellsPerRow)
{
c = 0;
r++;
row = sheet.createRow(r);
}
}
是的,这是可以实现的。到目前为止您尝试了什么?是的,这是可能的。请参阅Apache POI快速指南以了解如何使用它:@aeinstein83请更新您的问题,并在尝试使用库时添加代码。请不要在注释中发布代码,也不要发布代码墙。我已经添加了我正在添加的代码trying@aeinstein83我清理了你文章中的格式、拼写和语法。请努力在这些方面遵循良好的风格指南。应该使用方法
createCell
,createColumn
在行中不存在。并且创建了一个单元格,而不是一个不存在的Col
。OP正在询问对于每行10个单元格,而不是20个。行
应该使用createRow
,而不是getRow
。键入:s/rownuw/rownuw我们在这里设置单元格值吗?它丢失了…但是代码正在创建单元格…所以设置单元格值并不是那么困难。不管怎样,代码只是伪代码,例如,ommitting,创建工作簿等@aeinstein83-此答案试图向您展示如何在每20个项目后创建新行。设置单元格值的实际代码无关紧要。您应该专注于尝试了解发生了什么,而不是寻找要复制/粘贴的代码。
int rownum = 0;
int colnum = 0;
int itemsPerRow = 20;
String outfilename = "test.xls";
List<String> values = new ArrayList<String>();
// add some values ...
HSSFWorkbook book = new HSSFWorkbook();
HSSFSheet sheet = book.createSheet(
HSSFRow row = sheet.getRow(rownuw);
for(String s : values) {
HSSFCell cell = row.createCell(colnum);
cell.setCellValue(Integer.parseInt(id));
colnum = (column+1)%itemsPerRow;
if(colnum == 0) {
rownum++;
row = sheet.getRow(rownuw);
}
}
File f = new File("src/main/resources/films.xls");
FileOutputStream fos = new FileOutputStream(f);
book.write(fos);
fos.flush();
fos.close();
int r = 0;
int c = 0;
int maxCellsPerRow = 10;
Row row = sheet.createRow(r);
for (String str : data)
{
Cell cell = row.createCell(c);
cell.setCellValue(str);
c++;
// Create and advance to next row if needed.
if (c >= maxCellsPerRow)
{
c = 0;
r++;
row = sheet.createRow(r);
}
}