我有负责使用Apache POI工作簿创建XLS文件的方法,并且我想使用JFileChooser
保存该文件。现在,我可以使用文件编写器创建该文件并将其保存到预定义的位置。
但是要求是使用JFileChooser
保存该文件,我不知道该怎么做。
这是我的代码:
public void excelFileCreation()
{
try
{
String path = "D:/";
String fileName = "EwayBill.xls";
String filename = path.concat(fileName);
Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet("Eway Bill");
Row row1 = sheet.createRow((short)0);
Row row2 = sheet.createRow((short)0);
CellRangeAddress transactionDetails = new CellRangeAddress(0, 0, 0, 5);
sheet.addMergedRegion(transactionDetails);
row2.createCell(0).setCellValue("Transaction details");
CellRangeAddress fromConsignorDetails = new CellRangeAddress(0, 0, 6, 13);
sheet.addMergedRegion(fromConsignorDetails);
row2.createCell(6).setCellValue("Transaction details");
Row rowhead = sheet.createRow((short)1);
rowhead.createCell(0).setCellValue("User GSTIN");
rowhead.createCell(1).setCellValue("Supply Type");
rowhead.createCell(2).setCellValue("Sub Type");
rowhead.createCell(3).setCellValue("Document Type");
rowhead.createCell(4).setCellValue("Document No");
Row row = sheet.createRow((short)2);
row.createCell(0).setCellValue(" ");
row.createCell(1).setCellValue(" ");
row.createCell(2).setCellValue(" ");
row.createCell(3).setCellValue(" ");
row.createCell(4).setCellValue(" ");
for(int i=0; i<=79; i++)
{
sheet.setColumnWidth(i, 6000);
}
FileOutputStream fileOut = new FileOutputStream(filename);
wb.write(fileOut);
fileOut.close();
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
{
java.io.File file = fileChooser.getSelectedFile();
// save to file
}
System.out.println("Your excel file has been generated!");
}
catch(Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:1)
答案最有可能改变这一点:
FileOutputStream fileOut = new FileOutputStream(filename);
wb.write(fileOut);
fileOut.close();
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
{
java.io.File file = fileChooser.getSelectedFile();
// save to file
}
对此:
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
{
java.io.File file = fileChooser.getSelectedFile();
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close();
}
我说“最有可能”是因为我不确定是否会看到MCVE / SSCCE。
答案 1 :(得分:1)
该问题的确切可行解决方案是--->
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
{
File file = fileChooser.getSelectedFile();
if (file == null)
{
return;
}
// It will assign name to the file with extension .xls
file = new File(file.getParentFile(), file.getName() + ".xls");
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close();
}
感谢安德鲁·汤普森(Andrew Thompson)的指导。