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);
    }
}