Java 使用apache POI读取数据时出现问题。数据已读取,但excel文件随后已损坏
----此代码用于读取数据。所有数据都已成功读取,但在执行后,当查看文件时,数据已损坏,大小从10 kb变为0 kb。以下代码段适用于“.xls”文件扩展名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.
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;
}