Excel数据仅写入第一行-java

Excel数据仅写入第一行-java,java,excel,apache-poi,Java,Excel,Apache Poi,我已经使用java编写了一个将数据写入excel的代码,但是,它不会增加roe值,从而导致第1行本身的数据写入过度。我知道问题在于rownumcount increment import java.util.*; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util

我已经使用java编写了一个将数据写入excel的代码,但是,它不会增加roe值,从而导致第1行本身的数据写入过度。我知道问题在于
rownum
count increment

import java.util.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*; 
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import java.io.*;

public class ExcelWriter {
static int rownum;
@Test
public void ExcelWriters(Integer i, String CableName, String Count,
    String EndCableId, String FirstCableId) {
    rownum = i;
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet("WhileTrue");
    Map < Integer, Object[] > data = new HashMap < Integer, Object[] > (); {
        data.put(i, new Object[] {
            "Sr.no",
            "Cable",
            "Total Count",
            "EndCableId",
            "FirstCableId"
        });
        data.put(i, new Object[] {
            i,
            CableName,
            Count,
            EndCableId,
            FirstCableId
        });

        Set < Integer > keyset = data.keySet();

        for (Integer key: keyset) {
            HSSFRow row = sheet.createRow(rownum++);
            Object[] objArr = data.get(key);
            int cellnum = 0;
            for (Object obj: objArr) {
                HSSFCell cell = row.createCell(cellnum++);

                if (obj instanceof Date)
                    cell.setCellValue((Date) obj);
                else if (obj instanceof Boolean)
                    cell.setCellValue((Boolean) obj);
                else if (obj instanceof String)
                    cell.setCellValue((String) obj);
                else if (obj instanceof Double)
                    cell.setCellValue((Double) obj);
            }

        }

        try {
            FileOutputStream outputStream =

                new FileOutputStream((new File("FilePath")));
            workbook.write(outputStream);
            outputStream.close();
            System.out.println("Excel written Successfully");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
import java.util.*;
导入org.apache.poi.hssf.usermodel.*;
导入org.apache.poi.hssf.util.*;
导入org.apache.poi.ss.usermodel.*;
导入org.apache.poi.ss.util.*;
导入java.io.*;
公开课优秀作家{
静态int rownum;
@试验
public void ExcelWriters(整数i、字符串CableName、字符串计数、,
字符串EndCableId,字符串FirstCableId){
rownum=i;
HSSFWorkbook=新的HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet(“WhileTrue”);
Mapdata=newhashmap(){
data.put(i,新对象[]{
“Sr.no”,
“电缆”,
“总数”,
“EndCableId”,
“FirstCableId”
});
data.put(i,新对象[]{
我
CableName,
计数
EndCableId,
第一有线电视
});
Setkeyset=data.keyset();
for(整数键:键集){
HSSFRow行=sheet.createRow(rownum++);
Object[]objArr=data.get(key);
int-cellnum=0;
用于(对象对象对象:对象对象对象){
HSSFCell cell=row.createCell(cellnum++);
if(obj实例截止日期)
cell.setCellValue((日期)obj);
else if(obj instanceof Boolean)
cell.setCellValue((布尔)obj);
else if(字符串的obj实例)
cell.setCellValue((字符串)obj);
else if(双精度的obj实例)
cell.setCellValue((双)obj);
}
}
试一试{
文件输出流输出流=
新文件输出流((新文件(“文件路径”));
workbook.write(outputStream);
outputStream.close();
System.out.println(“Excel编写成功”);
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}

通过使用
data.put(i,新对象[]{…}
两次,映射只保存给定键
i
的最后一个值,即覆盖列的名称


将第一个
put(i,您的列名);
更改为
put(0,您的列名);

我只在poi库工作过一次,所以我在这方面没有太多知识,但通过查看您的代码,我认为问题出在哪里-

在使用这段代码之后

data.put(i, new Object[] {
        "Sr.no",
        "Cable",
        "Total Count",
        "EndCableId",
        "FirstCableId"
    });
您必须增加i的值,因为当您将两个数据行放在同一个excel行中时