gpt4 book ai didi

java - 打开用 Java 创建的 Excel 电子表格时出现输入/输出错误

转载 作者:行者123 更新时间:2023-11-28 22:22:47 25 4
gpt4 key购买 nike

我使用 NetBeans 7.4 实现了以下 Java 类,以便使用用户提供的数据创建 Excel 电子表格:

      package registration;
import java.io.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.util.Scanner; // program uses class Scanner
/**
*
* @author user
*/
public class Registration {

/**
* @param args the command line arguments
*/
/** Now a recursive class**/
public static void club(int option, int i, HSSFRow rowhead, HSSFSheet sheet,
HSSFWorkbook hwb) {
if (option <= 12);{
HSSFRow row = sheet.createRow((short)i);
switch (option) {
case 1: System.out.println("Ardboe");
row.createCell((short) 0).setCellValue("Ardboe");
break;
case 2: System.out.println("Moortown");
row.createCell((short) 0).setCellValue("Moortown");
break;
case 3: System.out.println("Ballinderry");
row.createCell((short) 0).setCellValue("Ballinderry");
break;
case 4: System.out.println("The Loup");
row.createCell((short) 0).setCellValue("The Loup");
break;
case 5: System.out.println("Ballymaguigan");
row.createCell((short) 0).setCellValue("Ballymaguigan");
break;
case 6: System.out.println("Brocagh");
row.createCell((short) 0).setCellValue("Brocagh");
break;
case 7: System.out.println("Clonoe");
row.createCell((short) 0).setCellValue("Clonoe");
break;
case 8: System.out.println("Derrylaughan");
row.createCell((short) 0).setCellValue("Derrylaughan");
break;
case 9: System.out.println("Derrytresk");
row.createCell((short) 0).setCellValue("Derrytresk");
break;
case 10: System.out.println("Stewartstown");
row.createCell((short) 0).setCellValue("Stewartstown");
break;
case 11: System.out.println("Ogra Columcille");
row.createCell((short) 0).setCellValue("Ogra Columcille");
break;
case 12: System.out.println("Newbridge");
row.createCell((short) 0).setCellValue("Newbridge");
break;
default: break;
}
}
}

public static void main(String[] args) throws IOException{
// TODO code application logic here
int option;
int i = 1;

HSSFWorkbook hwb=new HSSFWorkbook();

// create Scanner to obtain input from command window
Scanner input = new Scanner( System.in );

String filename="/Users/user/Documents/clubs.xls" ;
HSSFSheet sheet = hwb.createSheet("Clubs in Loughshore");
System.out.println("Select Loughshore Club Number. 1-12. 13 for exit.");
HSSFRow rowhead= sheet.createRow((short)0);
rowhead.createCell((short) 0).setCellValue("Clubs Listed");

FileOutputStream fileOut = new FileOutputStream(filename);
option = input.nextInt();
do{
club(option, i, rowhead, sheet, hwb);
System.out.println("Select Loughshore Club Number. 1-12. 13 for exit.");

option = input.nextInt();

i ++;
}
while (option <= 12);
}

}

但是,当我尝试在 LibreOffice 上打开创建的电子表格时,我不断收到“一般错误:输入/输出错误”。

问题是什么?我正在使用 Mac OS X Mountain Lion。

最佳答案

问题是您没有将 HSSFWorkbook 中的内容写入文件:您刚刚创建了一个名为 clubs.xls 的空文件(这不是真正的 xls 文件)。

看看我的实现:

public static void main(String[] args) throws IOException {
// TODO code application logic here
int option;
int i = 1;
// create Scanner to obtain input from command window
Scanner input = new Scanner(System.in);
String filename = "/Users/user/Documents/clubs.xls";
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("Clubs in Loughshore");
System.out.println("Select Loughshore Club Number. 1-12. 13 for exit.");
HSSFRow rowhead = sheet.createRow((short) 0);
rowhead.createCell((short) 0).setCellValue("Clubs Listed");
option = input.nextInt();
do {
club(option, i, rowhead, sheet, hwb);
System.out.println("Select Loughshore Club Number. 1-12. 13 for exit.");
option = input.nextInt();
i++;
} while (option <= 12);
input.close();
FileOutputStream out = null;
try {
out = new FileOutputStream(new File(filename));
hwb.write(out);
System.out.println("Excel written successfully..");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
out.close();
}
}

最后,我使用 FileOutputStream 使用 write 方法写下您的 HSSFWorkbook

此外,我注意到您使用了一个已弃用的方法,例如 createCell((short) 0) 并且当我插入数字 时,算法有一个奇怪的行为,至少对我而言是这样13 首先。

再见!

关于java - 打开用 Java 创建的 Excel 电子表格时出现输入/输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com