Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java只打印数据的最后一个单元格_Java_Excel_Apache Poi - Fatal编程技术网

Java只打印数据的最后一个单元格

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

我正在尝试从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 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”)