Java只打印数据的最后一个单元格
我正在尝试从csv读取内容并将其打印到excel文件。 到目前为止,我已经有了这个,但是它只将csv的最后一个值打印到excel文件的第一个单元格中。我尝试对列和行使用增量,但得到一个空指针异常错误Java只打印数据的最后一个单元格,java,excel,apache-poi,Java,Excel,Apache Poi,我正在尝试从csv读取内容并将其打印到excel文件。 到目前为止,我已经有了这个,但是它只将csv的最后一个值打印到excel文件的第一个单元格中。我尝试对列和行使用增量,但得到一个空指针异常错误 int i=0; int j=0; int k=0; int row=68; int column=0; String [] part={"052","064"}; try{ //InputStream inp = new FileInputStream(); //Workbook
int i=0;
int j=0;
int k=0;
int row=68;
int column=0;
String [] part={"052","064"};
try{
//InputStream inp = new FileInputStream();
//Workbook wb = WorkbookFactory.create(inp);
Workbook wb = WorkbookFactory.create(new File("30_results_w_graphs.xls"));
for (k=0; k<part.length; k++)
{
Sheet sheet = wb.getSheet(part[k]);
Cell cell = null;
Scanner scanner = new Scanner(new File(part[k]+".csv"));
scanner.useDelimiter(",");
while(scanner.hasNext()){
cell=sheet.getRow(row).getCell(column);
cell.setCellValue(scanner.next());
//row++;
//column++;
}
FileOutputStream fileOut = new FileOutputStream("30_results_U_w_graphs.xls");
wb.write(fileOut);
scanner.close();
}
}
inti=0;
int j=0;
int k=0;
int row=68;
int列=0;
字符串[]部分={“052”,“064”};
试一试{
//InputStream Input=新文件InputStream();
//工作簿wb=WorkbookFactory.create(inp);
工作簿wb=WorkbookFactory.create(新文件(“30_results_w_graphs.xls”);
对于(k=0;k您不增加行
或列
。使用createRow(int row)
和createCell(int column)
to创建新单元格。我不知道您到底想做什么,但这段代码显示了使用Apache POI将CSV文件读入现有Excel文件的一些基本步骤。现有的工作表/行/单元格将不会被删除
CSV文件如下所示:
12,14,18,21
82,19,18,44
9,4,31,12
将文件读入以文件名命名的工作表:
File excel = new File("/tmp/result.xls");
//Open existing Excel file:
Workbook wb = WorkbookFactory.create(excel);
//Create a new Excel file:
//Workbook wb = new HSSFWorkbook();
//Read in CSV
String name = "test";
Sheet sheet = wb.getSheet(name);
if (sheet == null) {
sheet = wb.createSheet(name);
}
int rowCount = 0;
Scanner scanner = new Scanner(new File("/tmp/" + name + ".csv"));
while (scanner.hasNextLine()) {
String[] rowData = scanner.nextLine().split(",");
for (int col = 0; col < rowData.length; col++) {
Row row = sheet.getRow(rowCount);
if (row == null)
row = sheet.createRow(rowCount);
Cell cell = row.getCell(col);
if (cell == null) {
cell = row.createCell(col);
}
cell.setCellValue(rowData[col]);
}
rowCount++;
}
wb.write(new FileOutputStream(excel));
}
File excel=新文件(“/tmp/result.xls”);
//打开现有Excel文件:
工作簿wb=WorkbookFactory.create(excel);
//创建新的Excel文件:
//工作簿wb=新的HSSF工作簿();
//以CSV格式读取
String name=“test”;
Sheet Sheet=wb.getSheet(名称);
如果(工作表==null){
sheet=wb.createSheet(名称);
}
int rowCount=0;
Scanner Scanner=new Scanner(新文件(“/tmp/”+name+”.csv”);
while(scanner.hasNextLine()){
String[]rowData=scanner.nextLine().split(“,”);
for(int col=0;col
在代码的哪一行,你得到了NPE?在roww++和column++被注释的地方,我试着这样做,我在这一行得到了一个异常:cell=sheet.getRow(row++).getCell(column++);确保你的工作表
不为空,还要检查sheet.getRow(row)
不返回null,最后返回row.getCell(column)
也不会返回null。我添加了两个if语句。如果每个语句都为null,++它们。但是它仍然不会写出所有数据,但它不会打印csv中的所有数据,我会对其进行处理,但只将最后一个数据单元格打印到Excel的第一个单元格中。NPE的堆栈跟踪是什么?如何获取NPE的堆栈跟踪?您怎么做当NPE被抛出时,控制台中是否有异常?test2.main(test2.java:113)处线程“main”java.lang.NullPointerException中的异常!谢谢!它可以工作,但是当我打开excel文档时,它会说数据是字符串格式的。如果数据是整数(有些列是日期),是否可以实现if语句将数据更改为int()并将其打印为整数?setCellValue()
还接受double
、Date
、Calendar
和boolean
数据类型。您可以使用标准Java方法将解析后的字符串转换为所需格式。(例如,搜索“将Java字符串转换为double”)