Board logo

标题: java导出文件弹出下载框让用户选择路径(5) [打印本页]

作者: look_w    时间: 2019-4-20 14:55     标题: java导出文件弹出下载框让用户选择路径(5)

桌面程序-swing弹出

swing只会在服务器中弹出,多用于 桌面程序-----如果用在web中则 在页面点击时,选择框在服务器弹出。

swing

    public static String writeExcel(String[][] titles, String title) {
     
            String fileName = "";
            JFileChooser dialog = new JFileChooser();
            dialog.setDialogTitle("保存文件");
            dialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
            FileSystemView fsv = FileSystemView.getFileSystemView();
            System.out.println(fsv.getHomeDirectory()); // 得到桌面路径
            dialog.setCurrentDirectory(fsv.getHomeDirectory()); // 设置默认保存路径为桌面路径
            // dialog.setDialogType(JFileChooser.SAVE_DIALOG);
            dialog.setSelectedFile(new File("订单列表"
                    + Calendar.getInstance().getTimeInMillis() + ".xls")); // 设置默认文件名
            dialog.setFileFilter(new TextFileFilter("*.xls", "文本文档(*.xls)"));
            int result = dialog.showSaveDialog(dialog);
            if (result == JFileChooser.APPROVE_OPTION) {
                File file = dialog.getSelectedFile();
                fileName = file.getAbsolutePath(); // 得到文件全名
     
                WritableWorkbook wwb = null;
                try {
                    // 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
     
                    wwb = Workbook.createWorkbook(new File(fileName));
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (wwb != null) {
                    // 创建一个可写入的工作表
                    // Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
                    WritableSheet ws = wwb.createSheet(title, 1);
     
                    // 下面开始添加单元格
                    for (int row = 0; row < titles.length; row++) {
                        // System.out.println(row);
                        for (int j = 0; j < titles[row].length; j++) {
                            // 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
                            Label labelC = new Label(j, row, titles[row][j]);
     
                            try {
                                // 将生成的单元格添加到工作表中
                                ws.addCell(labelC);
                            } catch (RowsExceededException e) {
                                e.printStackTrace();
                            } catch (WriteException e) {
                                e.printStackTrace();
                            }
                        }
                    }
     
                    try {
                        // 从内存中写入文件中
                        wwb.write();
                        // 关闭资源,释放内存
                        wwb.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (WriteException e) {
                        e.printStackTrace();
                    }
                }
            }
            return fileName;
        }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0