如何使用 JFileChooser 保存 XLS 文件?
How to save XLS file using JFileChooser?
我有负责使用 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();
}
}
答案最有可能改变这个:
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();
}
我说 'most likely' 是因为我不能确定没有看到 MCVE / SSCCE。
问题的确切解决方案是 --->
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();
}
感谢安德鲁·汤普森的指导。
我有负责使用 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();
}
}
答案最有可能改变这个:
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();
}
我说 'most likely' 是因为我不能确定没有看到 MCVE / SSCCE。
问题的确切解决方案是 --->
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();
}
感谢安德鲁·汤普森的指导。