[英]Excel file created with apache poi (Java) can't be opened on Windows
[英]Java how to user JFileChooser to save a excel file created by Apache POI
我想將電子表格文件保存到用戶自定義文件夾,人們建議使用JFileChooser
,但實際上我不知道如何實現它。 我這里有我當前的示例代碼:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Example {
public static void main(String[] args) throws FileNotFoundException, IOException {
XSSFWorkbook workbook;
File file = new File("example.xlsx");
if (file.exists() == false) {
workbook = new XSSFWorkbook();
XSSFSheet exampleSheet = workbook.createSheet("1");
XSSFRow firstRow = exampleSheet.createRow(1);
XSSFCell cell = firstRow.createCell(0);
cell.setCellValue("value");
try (
//Write the workbook in file system
FileOutputStream out = new FileOutputStream(file)) {
workbook.write(out);
}
} else {
// Sheet already exists
System.out.println("File already exist");
}
}
}
目前它只將文件保存到默認項目目錄。 但我希望將其保存到用戶選擇的路徑,並使用用戶自定義文件名。 JFileChooser
似乎是一個不錯的選擇,但有人可以告訴我如何在我的情況下使用它?
public class Example {
static String fileDictName = "";
public static void main(String[] args) throws FileNotFoundException, IOException {
XSSFWorkbook workbook;
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Open the file"); //name for chooser
FileFilter filter = new FileNameExtensionFilter("Files", ".xlsx"); //filter to show only that
fileChooser.setAcceptAllFileFilterUsed(false); //to show or not all other files
fileChooser.addChoosableFileFilter(filter);
fileChooser.setSelectedFile(new File(fileDictName)); //when you want to show the name of file into the chooser
fileChooser.setVisible(true);
int result = fileChooser.showOpenDialog(fileChooser);
if (result == JFileChooser.APPROVE_OPTION) {
fileDictName = fileChooser.getSelectedFile().getAbsolutePath();
} else {
return;
}
File file = new File(fileDictName);
if (file.exists() == false) {
workbook = new XSSFWorkbook();
XSSFSheet exampleSheet = workbook.createSheet("1");
XSSFRow firstRow = exampleSheet.createRow(1);
XSSFCell cell = firstRow.createCell(0);
cell.setCellValue("value");
try (
//Write the workbook in file system
FileOutputStream out = new FileOutputStream(file)) {
workbook.write(out);
}
} else {
// Sheet already exists
System.out.println("File already exist");
}
}
}
當我們想用它來保存文件時,我們需要:
JFileChooser fileChooser = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("Files", ".xlsx");
fileChooser.addChoosableFileFilter(filter);
fileChooser.setAcceptAllFileFilterUsed(false);
fileChooser.setDialogTitle("Save the dictionary file");
fileChooser.setSelectedFile(new File(fileDictName));
int userSelection = fileChooser.showSaveDialog(fileChooser);
if (userSelection == JFileChooser.APPROVE_OPTION) {
fileDictName = fileChooser.getSelectedFile().getAbsolutePath();
}
這是一個例子:
JFileChooser jfc = new JFileChooser();
int res = jfc.showSaveDialog(this);
if (res != JFileChooser.APPROVE_OPTION) {
return;
}
File file = jfc.getSelectedFile();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.