打开用Java创建的Excel电子表格时出现输入/输出错误
为了使用用户提供的数据创建Excel电子表格,我使用NetBeans 7.4实现了以下Java类:打开用Java创建的Excel电子表格时出现输入/输出错误,java,ios,macos,excel,apache-poi,Java,Ios,Macos,Excel,Apache Poi,为了使用用户提供的数据创建Excel电子表格,我使用NetBeans 7.4实现了以下Java类: package registration; import java.io.*; import java.io.BufferedReader; import java.io.IOException; import java.io.FileOutputStream; import java.io.InputStreamRead
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。问题在于您没有将HSSF工作簿中的内容写入文件:您刚刚创建了一个名为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方法写下您的HSSF工作簿
此外,我注意到您使用了一个不推荐使用的方法,例如createCellshort 0,当我第一次插入数字13时,该算法有一种奇怪的行为,至少对我来说是这样
再见 首先检查路径是否存在且可写。欢迎使用!如果这有帮助,并且你认为这是正确的答案,请接受它。谢谢您: