Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 使用apache POI读取数据时出现问题。数据已读取,但excel文件随后已损坏_Java_Apache Poi - Fatal编程技术网

Java 使用apache POI读取数据时出现问题。数据已读取,但excel文件随后已损坏

Java 使用apache POI读取数据时出现问题。数据已读取,但excel文件随后已损坏,java,apache-poi,Java,Apache Poi,----此代码用于读取数据。所有数据都已成功读取,但在执行后,当查看文件时,数据已损坏,大小从10 kb变为0 kb。以下代码段适用于“.xls”文件扩展名 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.

----此代码用于读取数据。所有数据都已成功读取,但在执行后,当查看文件时,数据已损坏,大小从10 kb变为0 kb。

以下代码段适用于“.xls”文件扩展名

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelData {
    File fs;
    FileInputStream fis;
    XSSFWorkbook workbook;
    XSSFSheet sheet;
    FileOutputStream fos;

    public ExcelData(String datafile_path) throws Exception{

        fs=new File(datafile_path);
        fis=new FileInputStream(fs);
        workbook=new XSSFWorkbook(fis);
        fos=new FileOutputStream(fs);

public Object readData(int sheet_num, int row_num, int column_num) throws Exception{

        sheet=workbook.getSheetAt(sheet_num);
        //sheet.getRow(row_num).getCell(column_num).CELL_TYPE_STRING;
        Object data = null;
        if (sheet.getRow(row_num).getCell(column_num).getCellType()==Cell.CELL_TYPE_STRING){
            data=sheet.getRow(row_num).getCell(column_num).getStringCellValue();
        } else if (sheet.getRow(row_num).getCell(column_num).getCellType()==Cell.CELL_TYPE_NUMERIC){
            data=sheet.getRow(row_num).getCell(column_num).getNumericCellValue();
        }
        workbook.close();
        //String data=sheet.getRow(row_num).getCell(column_num).getStringCellValue();
workbook.close();
        fis.close();        
return data;

    }
publicstring[]readFile(stringfilepath)抛出IOException、BiffException{
int totalNoOfRows、totalNoOfCols;
FileInputStream fis=新的FileInputStream(filePath);
工作簿wb=工作簿.get工作簿(fis);
//获取对工作表的访问权限
表sh=wb.getSheet(“表1”);
//获取工作表中的行数的步骤
totalNoOfRows=sh.getRows();
//获取工作表中的列数的步骤
totalNoOfCols=sh.getColumns();
字符串[][]excelData=新字符串[totalNoOfRows][totalNoOfCols];
for(int row=0;row
这是java,不是javascript。它们就像火腿和汉堡一样密切相关。为什么要打开该文件的
FileOutputStream
<代码>工作簿。关闭将关闭该输出流,但不会写入任何内容。那么文件是空的。如果不想向输出流写入内容,则不应打开该流。
Workbook.getWorkbook
不是
apachepoi
。它是
jxl
。所以这个代码与这个问题无关。
public String[][] readFile(String filePath) throws IOException, BiffException {
    int totalNoOfRows, totalNoOfCols;

    FileInputStream fis = new FileInputStream(filePath);

    Workbook wb = Workbook.getWorkbook(fis);

    // To get the access to the sheet
    Sheet sh = wb.getSheet("Sheet1");

    // To get the number of rows present in sheet
    totalNoOfRows = sh.getRows();
    // To get the number of columns present in sheet
    totalNoOfCols = sh.getColumns();

    String[][] excelData = new String[totalNoOfRows][totalNoOfCols];

    for (int row = 0; row < totalNoOfRows; row++) {
        for (int col = 0; col < totalNoOfCols; col++) {
            excelData[row][col] = sh.getCell(col, row).getContents();
        }
    }

    wb.close();
    fis.close();
    return excelData;
}