Java Excel I/0问题
Java Excel I/0问题,java,excel,io,apache-poi,Java,Excel,Io,Apache Poi,为了使用我的项目,我需要从apache学习POIAPI。 所以我决定创建一个小程序,创建一个电子表格并用一些值填充其单元格 问题是它没有做到它应该做的,我很确定逻辑是正确的,我怀疑这与数据写入文件的方式有关,但我无法修复它,因为我在处理I/O方面的经验非常差。 这是我的代码: package excel; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.a
为了使用我的项目,我需要从apache学习POIAPI。 所以我决定创建一个小程序,创建一个电子表格并用一些值填充其单元格
问题是它没有做到它应该做的,我很确定逻辑是正确的,我怀疑这与数据写入文件的方式有关,但我无法修复它,因为我在处理I/O方面的经验非常差。
这是我的代码:
package excel;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class Excel {
public static void main(String[] args) {
Workbook workbook = new HSSFWorkbook();
Sheet sheetTest = workbook.createSheet("TestPOI");
Cell[] cell = new Cell[100];
int k = 0, i=0, j=0;
for( i=0; i<10; i++){
for (j = 0; j < 10; j++) {
System.out.println(k);
cell[k] = sheetTest.createRow(i).createCell(j);
cell[k].setCellValue(k);
k++;
}
}
try{
FileOutputStream output = new FileOutputStream("MyWorkbook.xls");
workbook.write(output);
output.close();
} //end try
catch(Exception e){
e.printStackTrace();
} //end catch
} // end of the main method
}
excel软件包;
导入java.io.FileOutputStream;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.Sheet;
导入org.apache.poi.ss.usermodel.工作簿;
公共类Excel{
公共静态void main(字符串[]args){
工作簿=新的HSSF工作簿();
Sheet sheetTest=workbook.createSheet(“TestPOI”);
单元格[]单元格=新单元格[100];
int k=0,i=0,j=0;
对于(i=0;i而言,问题似乎在于代码中的以下语句:
cell[k] = sheetTest.createRow(i).createCell(i);
i值将在0-10之间不断变化。我认为在创建100行时需要使用以下方法:
cell[k] = sheetTest.createRow(k).createCell(i);
我看到两个问题
1) 您没有分隔行和列。这意味着您总是使用相同的行/列
cell[k] = sheetTest.createRow(i).createCell(i);
2) 每次都要创建行。每个外部循环只能创建一次
你想要什么:
for( i=0; i<10; i++){
HSSFRow row = sheetTest.createRow(i);
for (j = 0; j < 10; j++) {
System.out.println(k);
cell[k] = row.createCell(j);
cell[k].setCellValue(k);
k++;
}
}
for(i=0;i我已经更正了代码,现在一切正常了。
以下是正确的代码:
package excel;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class Excel {
public static void main(String[] args) {
Workbook workbook = new HSSFWorkbook();
Sheet sheetTest = workbook.createSheet("TestPOI2");
// Creating an array of cells
Cell[] cell = new Cell[100];
int k = 0, i=0, j=0;
for( i=0; i<10; i++){
Row row = sheetTest.createRow(i);
for (j = 0; j < 10; j++) {
cell[k] = row.createCell(j);
cell[k].setCellValue(k);
k++;
}
try{
FileOutputStream output = new FileOutputStream("MyWorkbook.xls");
workbook.write(output);
output.close();
} //end try
catch(Exception e){
e.printStackTrace();
} //end catch
} // end of the main method
}
excel软件包;
导入java.io.FileOutputStream;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.ss.usermodel.Sheet;
导入org.apache.poi.ss.usermodel.工作簿;
公共类Excel{
公共静态void main(字符串[]args){
工作簿=新的HSSF工作簿();
Sheet sheetTest=workbook.createSheet(“TestPOI2”);
//创建单元格数组
单元格[]单元格=新单元格[100];
int k=0,i=0,j=0;
对于(i=0;i它应该做什么?它应该做什么?换句话说,你没有预料到的具体情况是什么?它应该用一些值填充100个单元格(10*10)。相反,它只填充10个单元格(最后一行),你可以自己运行代码并查看。感谢你的回答它实际上是单元格[k] =sheetTest.createRow(i).createCell(j);
我试图传达这样的信息:当调用createRow()时,传递的是i的值,i的值将始终在0-10之间,因为您有一个嵌套循环。如果在createRow()中传递k,那么您应该能够创建100行。