`

【转】java实现导出Excel文件和XML文件

 
阅读更多
http://www.2cto.com/kf/201208/152005.html

一、功能简述

点击“导出”按钮,弹出文件选择对话框,选择存放路径,填写文件名,点击“导出”按钮导出界面上table中的数据到指定路径

添加:dom4j-1.6.1.jar,用于XML

二、实现效果

2.1 界面数据



2.2 文件选择对话框


2.3 导出成功后,文件内容



三、代码

public class ExportFileService { 
    private static final String SAVEPATH = "D:\\";  
    private static final String BUTTONTEXT = "导出";   
    private static final String  TITLE = "导出数据";   
    public ExportFileService(){ 
         
    } 
    /**
     * 
     * @param filters  可选择的导出类型
     * @return file[0] 文件全路径;file[1] 导出类型
     */ 
    public static String[] exportFile(List<FileFilter> filters){   
        JFileChooser fileChooser = initEmportFile(filters); 
        int result = fileChooser.showOpenDialog(null); 
        String type = fileChooser.getFileFilter().getDescription(); 
        if (result == JFileChooser.APPROVE_OPTION) { 
            File file = fileChooser.getSelectedFile(); 
            String fn = file.getPath(); 
            String[] fileAndType = new String[2]; 
            fileAndType[0]=fn; 
            fileAndType[1]=type; 
            return fileAndType; 
        } 
        return null; 
    } 
    /**
     * 文件对话框中判断是否覆盖已存在文件,加入带导入类型
     * @param filters 可选择的导入类型
     * @return 文件选择框
     */ 
    private static JFileChooser initEmportFile(List<FileFilter> filters) { 
        JFileChooser fileChooser = new JFileChooser(SAVEPATH) { 
            private static final long serialVersionUID = 1L; 
 
            public void approveSelection() { 
                File file; 
                String fileName = this.getSelectedFile().getAbsolutePath(); 
 
                file = new File(fileName); 
                if (file.exists()) { 
                    int copy = JOptionPane.showConfirmDialog(null, 
                            "是否要覆盖当前文件?", "保存", JOptionPane.YES_NO_OPTION, 
                            JOptionPane.QUESTION_MESSAGE); 
                    if (copy == JOptionPane.YES_OPTION) { 
                        super.setSelectedFile(file); 
                        super.approveSelection(); 
                    } 
                } else 
                    super.approveSelection(); 
            } 
        }; 
        fileChooser.setAcceptAllFileFilterUsed(false); 
        fileChooser.setApproveButtonText(BUTTONTEXT); 
        fileChooser.setDialogTitle(TITLE); 
        for(FileFilter one :filters){ 
            fileChooser.addChoosableFileFilter( one); 
        } 
        return fileChooser; 
    } 
    /**
     * 创建新的Excel 工作簿
     * @param filename 待导出文件名称的全路径,不带后缀
     * @param data 待导出数据,首个list<Object>是字段信息
     * @param sheetName 表单名称
     * @return true 导出成功;false 导出失败
     */ 
    @SuppressWarnings("deprecation") 
    public static boolean createExcel(String filename, List<List<Object>> data, 
            String sheetName) {  
        HSSFWorkbook workbook = null; 
        HSSFSheet sheet = null; 
        HSSFRow[] rows = null; 
        HSSFCell[][] cells = null; 
        workbook = new HSSFWorkbook(); 
        if (sheetName.trim().equals("")) { 
            sheet = workbook.createSheet("表"); 
        } else { 
            sheet = workbook.createSheet(sheetName); 
        } 
        try { 
            int row = 0; 
            int col = 0; 
            if (data.size() > 0) { 
                row = data.size(); 
                col = data.get(0).size(); 
            } 
            rows = new HSSFRow[row]; 
            cells = new HSSFCell[row][col]; 
            for (int i = 0; i < data.size(); i++) { 
                rows[i] = sheet.createRow((short) i); 
                for (int j = 0; j < data.get(i).size(); j++) { 
                    cells[i][j] = rows[i].createCell((short) j); 
                    cells[i][j].setCellType(HSSFCell.CELL_TYPE_STRING); 
                    if (data.get(i).get(j) != null 
                            && !data.get(i).get(j).toString().trim().equals("")) { 
                        cells[i][j].setCellValue(data.get(i).get(j).toString() 
                                .trim()); 
                    } else { 
                        cells[i][j].setCellValue(""); 
                    } 
                } 
            } 
            FileOutputStream fOut = new FileOutputStream(filename); 
            // 把相应的Excel 工作簿存盘 
            workbook.write(fOut); 
            fOut.flush(); 
            // 操作结束,关闭文件 
            fOut.close(); 
            return true; 
        } catch (Exception e) { 
            return false; 
        } 
    } 
    /**
     * 生成XML文件
     * @param filename 待导出文件名称的全路径,不带后缀
     * @param data 待导出数据,首个list<Object>是字段信息
     * @return true 导出成功;false 导出失败
     */ 
    public static boolean createXML(String filename, List<List<Object>> data) { 
        Document doc = DocumentHelper.createDocument(); 
        Element root = doc.addElement("root"); 
        List<Object> name = data.get(0); 
 
        for (int i = 1; i < data.size(); i++) { 
            Element row = root.addElement("row"); 
            for (int j = 0; j < name.size(); j++) { 
                Element cell = row.addElement("col" + j); 
                cell.setText(null == data.get(i).get(j) ? "" : data.get(i) 
                        .get(j).toString()); 
                cell.addAttribute("name", name.get(j).toString()); 
            } 
        } 
        try { 
            FileOutputStream fOut = new FileOutputStream(filename); 
            OutputFormat format = new OutputFormat("    ", true); 
            format.setEncoding("utf-8"); 
            // 可以把System.out改为你要的流。 
            XMLWriter xmlWriter = new XMLWriter(fOut, format); 
            xmlWriter.write(doc); 
            xmlWriter.close(); 
            return true; 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        return false; 
    } 
} 

/**
 * XML文件类型
 * @author rwq
 *
 */ 
public class MyFileFilterXML extends javax.swing.filechooser.FileFilter { 
     
private List<String> ext=new ArrayList<String>(); 
     
    public MyFileFilterXML(){ 
        ext.add(".XML"); 
        ext.add(".xml"); 
    } 
    public List<String> getExt() { 
        return ext; 
    } 
    public boolean accept(java.io.File pathname) { 
        String fn = pathname.getAbsolutePath().toString(); 
        if (fn.length() > 4) 
            fn = fn.substring(fn.length() - 4, fn.length()); 
        if (ext.contains(fn)|| pathname.isDirectory()) 
            return true; 
        return false; 
    } 
 
    public String getDescription() { 
        return "XML文件(*.xml)"; 
    } 
} 

/**
 * Excel文件类型
 * @author rwq
 *
 */ 
public class MyFileFilterExcel extends javax.swing.filechooser.FileFilter { 
     
    private List<String> ext=new ArrayList<String>(); 
     
    public MyFileFilterExcel(){ 
        ext.add(".XLS"); 
        ext.add(".xls"); 
        ext.add("xlsx"); 
        ext.add("XLSX"); 
    } 
public List<String> getExt() { 
    return ext; 
} 
    public boolean accept(java.io.File pathname) { 
        String fn = pathname.getAbsolutePath().toString(); 
        if (fn.length() > 4){ 
            fn = fn.substring(fn.length() - 4, fn.length()); 
        } 
        if (ext.contains(fn) || pathname.isDirectory()){ 
            return true; 
        } 
        return false; 
    } 
 
    public String getDescription() { 
        return "Excel文件(*.xls,*.xlsx)"; 
    } 
 
} 

四、调用方式
 
       /**
 * 导出
 */ 
private void export() { 
    MyFileFilterExcel excelFilter = new MyFileFilterExcel(); 
    MyFileFilterXML xmlFilter = new MyFileFilterXML(); 
    List<FileFilter> filters = new ArrayList<FileFilter>(); 
    filters.add(excelFilter); 
    filters.add(xmlFilter); 
    boolean createFileRs = false; 
    String[] pathAndTypeStr = ExportFileService.exportFile(filters); 
    if(pathAndTypeStr==null){ 
        return ; 
    } 
    List<List<Object>> data = changeDataToFile(); 
    if (pathAndTypeStr[1].equals(excelFilter.getDescription())) { 
        pathAndTypeStr[0] = pathAndTypeStr[0] + ".xls"; 
        createFileRs = ExportFileService.createExcel(pathAndTypeStr[0], data, 
                viewAccountV.comboxYearAndMonth.getSelectedItem().toString()); 
    } else if (pathAndTypeStr[1].equals(xmlFilter.getDescription())) { 
        pathAndTypeStr[0] = pathAndTypeStr[0] + ".xml"; 
        createFileRs = ExportFileService.createXML(pathAndTypeStr[0], data); 
    }  
    JOptionPane.showMessageDialog(null, "文件导出" 
            + (createFileRs ? "成功" : "失败"), "提示", 
            JOptionPane.INFORMATION_MESSAGE); 
} 
分享到:
评论

相关推荐

    java实现导出Excel文件和XML文件.docx

    Java实现导出Excel文件和XML文件是Java语言中的一种常见需求,本文将详细介绍如何使用Java实现导出Excel文件和XML文件的功能。 一、功能简述 点击“导出”按钮,弹出文件选择对话框,选择存放路径,填写文件名,...

    java导出TXT和Excel文件

    导出Excel文件利用apache的poi第三方包,可在阿帕奇官网下载(最新版本为3.8,支持office2010)。解压文件后,只需要把项目导入到eclipse,再将hibernate.cfg.xml里连接Oracle的URL和用户名、密码更改下。参考entity...

    java xml excel文件导入导出

    在Java开发中,处理Excel和XML文件是一项常见的任务,特别是在数据导入导出、报表生成以及数据交换等场景。本文将详细讲解如何使用Java进行Excel和XML文件的解析及操作。 一、Excel文件处理 1. **Apache POI库**:...

    java导出Excel文件.pdf

    文档标题为“java导出Excel文件.pdf”,描述了从导入依赖、配置文件、前端实现到后端处理的完整流程。涉及到的技术标签包括POI、Vue、Spring Boot以及jqGrid。我们接下来将按照标题和描述的要求,详细解读各个部分的...

    java实现导出excel、word、 pdf

    在Java编程中,导出Excel、Word和PDF是常见的数据呈现和报告生成需求。这些文件格式广泛用于数据存储、报表生成、文档分享等场景。以下将详细介绍如何使用Java实现这三种文件类型的导出。 首先,让我们关注Excel的...

    Java Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    在Java编程中,导出Excel文件是常见的数据处理任务,特别是在数据分析、报表生成或数据交换等场景。这里我们将深入探讨如何使用Java实现XML到Excel的转换以及如何创建一个通用的Excel导出工具类。首先,我们需要理解...

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。

    EXCEL文件转XML文件

    - **手动转换**:可以使用Excel自身的“另存为”功能,选择XML数据或XML表格格式,将Excel文件导出为XML。 - **编程转换**:利用编程语言如Python(pandas库的to_xml函数)、VBA(Visual Basic for Applications)...

    java导出excel、xml

    在Java编程环境中,导出Excel和XML是常见的数据交换任务,尤其在数据分析、报表生成以及数据存储方面。这里我们将深入探讨如何使用Java来处理这两种格式。 1. **Java与Excel交互**: - **Apache POI库**:这是Java...

    XML文件导出为本地excel文件

    本篇文章将详细讲解如何将XML文件导出为本地的Excel文件,这一过程涉及到数据解析、格式转换以及文件操作等多个关键知识点。 首先,我们需要了解XML的基本结构。XML文件由元素(Elements)、属性(Attributes)、...

    java复杂模板excel导出例子

    首先,Java中最常用的库是Apache POI,这是一个用于读写Microsoft Office格式档案的开源库,特别适合处理Excel文件(.xlsx和.xls)。Apache POI提供了丰富的API,可以创建、修改和读取Excel工作簿、工作表、单元格等...

    java导出excel POI jar包

    Java导出Excel是Java开发中常见的需求,尤其是在数据处理和报表生成方面。Apache POI库是Java领域中广泛使用的工具,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。本篇文章将深入讲解...

    Java导出Excel文件

    总的来说,这个压缩包提供了一个完整的解决方案,可以帮助开发者快速理解和实现Java中导出包含数据和图片的Excel文件功能。通过学习和理解这个示例,你可以进一步掌握Apache POI的使用,并将其应用到自己的项目中,...

    Java实现POI导出Excel

    Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...

    java Excel文件转PDF文件

    Apache POI是Java中处理Microsoft Office格式文件(如Excel)的库,而iText则是用于创建和编辑PDF文档的库。 首先,我们需要导入必要的库。在项目中添加Apache POI和iText的依赖。如果你使用的是Maven,可以在pom....

    JAVA poi 做EXCEL导出(包含图片) 完整版

    在Java编程环境中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel(.xlsx 和 .xls)文件。本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel...

    java实现Excel导出

    在Java编程环境中,导出Excel是一项常见的任务,特别是在数据处理和报表生成的场景下。这里我们将深入探讨如何使用Java来实现Excel的导出功能。 首先,我们需要了解Java中用于处理Excel的主要库,Apache POI是一个...

    POI实现Excel导入导出并附带加载进度条

    Apache POI是一个强大的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,...

    java代码实现Excel文件的导入和导出

    本篇文章将深入探讨如何使用Java来实现Excel文件的导入和导出,特别是针对".xls"和".xlsx"这两种常见格式。 1. **Apache POI库**: Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括...

    java中将数据和图片导出到Excel文件

    在Java编程环境下实现数据及图片导出至Excel文件是一项常见的任务,特别是在处理报表、数据分析等场景时。本文将详细解析如何通过Java代码来完成这一过程,包括如何创建Excel文档、写入数据、插入图片等关键步骤。 ...

Global site tag (gtag.js) - Google Analytics