Java 只有最后一个索引值被插入excel工作表
我正在尝试通过web表将数据写入excel。Java 只有最后一个索引值被插入excel工作表,java,selenium,Java,Selenium,我正在尝试通过web表将数据写入excel。 起始行用空白数据创建,最后一行用数据填充,最后一个索引值。 即使Arraylist中存在数据,其他行也不会被数据填充 public class Write_Excel { public static `FileInputStream` `fis`; public static FileOutputStream fos; public static `HSSFWorkbook` `wb`;
起始行用空白数据创建,最后一行用数据填充,最后一个索引值。
即使
Arraylist
中存在数据,其他行也不会被数据填充
public class Write_Excel {
public static `FileInputStream` `fis`;
public static FileOutputStream fos;
public static `HSSFWorkbook` `wb`;
public static `HSSFSheet` `sheet`;
public static `HSSFCell` `cell`;
public static `HSSFRow` `row`;
public static `int a = 0`;
public static void write_Excel(String fileName, String sheetName,
`ArrayList`<String> `dataToWrite`) throws `IOException` {
fos = new `FileOutputStream(fileName);
wb = new HSSFWorkbook();
sheet = `wb.createSheet(sheetName);`
`row = sheet.createRow(a++);`
for (int i = 0; i < 16; i++) {
cell = row.createCell(i);
System.out.println(dataToWrite.get(i).toString());
cell.setCellValue(new HSSFRichTextString(dataToWrite.get(i)));
}
wb.write(fos);
fos.flush();
}
}
公共类写入\u Excel{
公共静态`FileInputStream``fis`;
公共静态文件输出流;
公共静态“HSSFWorkbook”“wb”;
公共静态“HSSFSheet”“sheet”;
公共静态'HSSFCell``单元';
公共静态'HSSFRow``行';
公共静态'int a=0';
public static void write_Excel(字符串文件名、字符串名称、,
`ArrayList``dataToWrite`)抛出`IOException`{
fos=新的`FileOutputStream(文件名);
wb=新的HSSF工作手册();
sheet=`wb.createSheet(sheetName)`
`row=sheet.createRow(a++)`
对于(inti=0;i<16;i++){
单元格=行。创建单元格(i);
System.out.println(dataToWrite.get(i.toString());
setCellValue(新的HSSFRichTextString(dataToWrite.get(i));
}
wb.write(fos);
fos.flush();
}
}
您应该将此行添加到for循环中
HSSFRow row = sheet.createRow(a++);
在执行此操作时,每次调用该函数时都会创建一个新工作簿,最后只会删除以前的工作簿。因此,您只能得到最后一次调用的结果 如果您想在每次调用时添加一行,请这样做,您需要将行号和工作簿作为类变量。此外,您还需要获得已创建的工作表以附加到它。或者你也要把它擦掉
public static void main(String[] args) {
try {
write_Excel("myFile.xls","sheetName",
Arrays.asList("value 1", "value 2", "value 3"));
write_Excel("myFile.xls","sheetName",
Arrays.asList("value 4", "value 5", "value 6"));
} catch(IOException e) {
e.printStackTrace();
}
}
private static int newRowIndex = 0;
private static HSSFWorkbook workbook = new HSSFWorkbook();
public static void write_Excel(String fileName, String sheetName, List<String> dataToWrite) throws IOException {
FileOutputStream fos = new FileOutputStream(fileName);
// open or create sheet
HSSFSheet sheet = workbook.getSheet(sheetName) != null ?
workbook.getSheet(sheetName) :
workbook.createSheet(sheetName);
// create a new row
HSSFRow row = sheet.createRow(newRowIndex ++);
// write your data in the new row
for (int colIndex = 0; colIndex < dataToWrite.size(); colIndex++) {
HSSFCell cell = row.createCell(colIndex);
cell.setCellValue(new HSSFRichTextString(dataToWrite.get(colIndex)));
}
workbook.write(fos);
fos.flush();
fos.close();
}
publicstaticvoidmain(字符串[]args){
试一试{
编写Excel(“myFile.xls”、“sheetName”,
asList(“值1”、“值2”、“值3”);
编写Excel(“myFile.xls”、“sheetName”,
asList(“值4”、“值5”、“值6”);
}捕获(IOE异常){
e、 printStackTrace();
}
}
私有静态int newRowIndex=0;
专用静态HSSFWorkbook工作簿=新建HSSFWorkbook();
公共静态void write_Excel(字符串文件名、字符串表名、列表数据写入)引发IOException{
FileOutputStream fos=新的FileOutputStream(文件名);
//打开或创建工作表
HSSFSheet sheet=工作簿。getSheet(sheetName)!=空?
工作簿.getSheet(sheetName):
workbook.createSheet(sheetName);
//创建新行
HSSFRow行=sheet.createRow(newRowIndex++);
//在新行中写入数据
对于(int-colIndex=0;colIndex
您只有一个要写入的字符串列表,是希望每行有一个字符串,还是希望所有字符串都在同一行上?或者每次调用该方法时都添加一行数据?每次调用该方法时都添加一行数据我在下面为其添加了答案。我使用了此代码的引用,但最后一个索引值正在插入excelI测试此代码,它在xls文件中写了2行。在这种情况下,创建了2行,但第一行是空的。你能用修改过的代码编辑你的帖子吗?好的!欢迎