java - 使用java将数据从多个arrayLists导出到单个excel表
问题描述
我有两个数组列表,每个数组都包含某些整数值,我的挑战是使用 java 打印 excel 表中每一列中的每个数组列表数据。为此,我使用了 apache POI。当我执行下面的代码时,只有一列正在写入,另一列为空。
- 为此,我使用了两个类,主要类如下。
package basic;
import java.io.IOException;
import java.util.*;
public class excel {
public static void main(String[] args) throws IOException, InterruptedException {
SimpleExcelWriterExample.createRecord();
List<Integer> values1=Arrays.asList(1,2,3,4,5,6);
List<Integer> values2=Arrays.asList(1,2,3,4,5,6);
SimpleExcelWriterExample.AddRecord(values1,0);
SimpleExcelWriterExample.AddRecord(values2,1);
SimpleExcelWriterExample.Add();
}
}
SimpleExcelWriterExample 类如下
package basic;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.poi.xssf.usermodel.*;
class SimpleExcelWriterExample {
public static XSSFWorkbook workbook;
public static XSSFSheet worksheet;
public static FileOutputStream fileOut;
public static XSSFRow row;
public static XSSFCell cell;
public static void createRecord()throws IOException {
fileOut = new FileOutputStream("C:\\Users\\DELL\\workspace\\wipro1\\src\\basic\\New.xlsx");
workbook = new XSSFWorkbook();
worksheet = workbook.createSheet("POI Worksheet");
System.out.println("Sheet creadted successfully");
}
public static void AddRecord(List<Integer> values, int col) throws IOException {
for (int i = 0; i < values.size(); i++) {
row = worksheet.createRow(i);
cell = row.createCell(col);
cell.setCellValue(values.get(i));
//System.out.println(cellAj.getStringCellValue());
}
}
public static void Add() throws IOException {
workbook.write(fileOut);
}
}
- 我得到的输出如下 在此处输入图像描述
请帮我解决这个问题,在此先感谢。
解决方案
Sheet.createRow
总是在工作表中创建一个新的空行。所以在你的AddRecord
方法中
row = worksheet.getRow(i); if (row == null) row = worksheet.createRow(i);
首先尝试获取该行,并且仅当该行不存在时,它才会创建该行。
所以完整 AddRecord
的方法可能看起来像:
public static void AddRecord(List<Integer> values, int col) throws IOException {
for (int i = 0; i < values.size(); i++) {
row = worksheet.getRow(i); if (row == null) row = worksheet.createRow(i);
cell = row.createCell(col);
cell.setCellValue(values.get(i));
//System.out.println(cellAj.getStringCellValue());
}
}
推荐阅读
- windows-messages - 我们什么时候应该覆盖 WindowProc,什么时候应该覆盖 DefWindowProc?
- python - 将列分配给 pandas df
- entity-framework - 如何在连接中使用 lambda 表达式
- visual-studio - 例外:未找到与约束合同名称匹配的导出:Nuget.VisualStudio.IVsPackageInstaller
- mysql - MySQL:将 GROUP_CONCAT 中的 null 替换为 0
- php - 从具有公共列的两个表中选择全部 - 相同的列名
- c - C - 如何为每个数组元素动态分配内存?
- github - 原始的 draft-js 和分叉的 draft-js,安装时具有不同的结构
- jmeter - 使用 jmeter 进行后端 Java 应用程序测试
- c# - 自动实现属性并删除其支持字段