我有一个Java程序来编辑一个现有的Excel文件并将其保存为新文件。然而,我希望该程序在结束时自动打开新创建的文件。是否有一个Apache POI命令可以让我这样做?
我有一个Java程序来编辑一个现有的Excel文件并将其保存为新文件。然而,我希望该程序在结束时自动打开新创建的文件。是否有一个Apache POI命令可以让我这样做?
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] { "Emp No.", "Name", "Salary" });
data.put("2", new Object[] { 1d, "John", 1500000d });
data.put("3", new Object[] { 2d, "Sam", 800000d });
data.put("4", new Object[] { 3d, "Dean", 700000d });
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
Row row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
Cell cell = row.createCell(cellnum++);
if (obj instanceof Date)
cell.setCellValue((Date) obj);
else if (obj instanceof Boolean)
cell.setCellValue((Boolean) obj);
else if (obj instanceof String)
cell.setCellValue((String) obj);
else if (obj instanceof Double)
cell.setCellValue((Double) obj);
}
}
try {
FileOutputStream out = new FileOutputStream(new File("D:\\new.xls"));
workbook.write(out);
out.close();
System.out.println("Excel written successfully..");
/** Opening Excel File From Java **/
try {
Desktop.getDesktop().open(new File("D:\\new.xls"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
输出
解决方案:在正确位置创建Excel后,将此代码与Try/Catch块一起放置,它将自动打开。
Desktop.getDesktop().open(new File("D:\new.xls"));
否则,您也可以调用这个:
尝试使用Desktop.open()而不是Desktop.edit():
Desktop dt = Desktop.getDesktop();
dt.open(new File("D:\\new.xls"));
Process p = Runtime.getRuntime() .exec("rundll32
url.dll,FileProtocolHandler " + "D:\\new.xls");
我不知道POI是否提供这样的方法。但是,您可以使用简单的Java方法来使用命令提示符打开所需的文件,使用start
命令。
public static void openExcelFile(){
try{
Runtime.getRuntime().exec("cmd /c start "+FilePath);
}catch(IOException e){
e.printStackTrace();
}
}
注意:在start
之后必须加上空格。不要忘记它。