一、功能简述
点击“导出”按钮,弹出文件选择对话框,选择存放路径,填写文件名,点击“导出”按钮导出界面上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文件是Java语言中的一种常见需求,本文将详细介绍如何使用Java实现导出Excel文件和XML文件的功能。 一、功能简述 点击“导出”按钮,弹出文件选择对话框,选择存放路径,填写文件名,...
导出Excel文件利用apache的poi第三方包,可在阿帕奇官网下载(最新版本为3.8,支持office2010)。解压文件后,只需要把项目导入到eclipse,再将hibernate.cfg.xml里连接Oracle的URL和用户名、密码更改下。参考entity...
文档标题为“java导出Excel文件.pdf”,描述了从导入依赖、配置文件、前端实现到后端处理的完整流程。涉及到的技术标签包括POI、Vue、Spring Boot以及jqGrid。我们接下来将按照标题和描述的要求,详细解读各个部分的...
在Java编程中,导出Excel、Word和PDF是常见的数据呈现和报告生成需求。这些文件格式广泛用于数据存储、报表生成、文档分享等场景。以下将详细介绍如何使用Java实现这三种文件类型的导出。 首先,让我们关注Excel的...
在Java开发中,处理Excel和XML文件是一项常见的任务,特别是在数据导入导出、报表生成以及数据交换等场景。本文将详细讲解如何使用Java进行Excel和XML文件的解析及操作。 一、Excel文件处理 1. **Apache POI库**:...
在Java编程中,导出Excel文件是常见的数据处理任务,特别是在数据分析、报表生成或数据交换等场景。这里我们将深入探讨如何使用Java实现XML到Excel的转换以及如何创建一个通用的Excel导出工具类。首先,我们需要理解...
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。
在Java编程环境中,导出Excel和XML是常见的数据交换任务,尤其在数据分析、报表生成以及数据存储方面。这里我们将深入探讨如何使用Java来处理这两种格式。 1. **Java与Excel交互**: - **Apache POI库**:这是Java...
首先,Java中最常用的库是Apache POI,这是一个用于读写Microsoft Office格式档案的开源库,特别适合处理Excel文件(.xlsx和.xls)。Apache POI提供了丰富的API,可以创建、修改和读取Excel工作簿、工作表、单元格等...
Java导出Excel是Java开发中常见的需求,尤其是在数据处理和报表生成方面。Apache POI库是Java领域中广泛使用的工具,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。本篇文章将深入讲解...
总的来说,这个压缩包提供了一个完整的解决方案,可以帮助开发者快速理解和实现Java中导出包含数据和图片的Excel文件功能。通过学习和理解这个示例,你可以进一步掌握Apache POI的使用,并将其应用到自己的项目中,...
Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...
Apache POI是一个强大的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,...
在Java编程环境中,导出Excel是一项常见的任务,特别是在数据处理和报表生成的场景下。这里我们将深入探讨如何使用Java来实现Excel的导出功能。 首先,我们需要了解Java中用于处理Excel的主要库,Apache POI是一个...
本篇文章将详细讲解如何将XML文件导出为本地的Excel文件,这一过程涉及到数据解析、格式转换以及文件操作等多个关键知识点。 首先,我们需要了解XML的基本结构。XML文件由元素(Elements)、属性(Attributes)、...
本篇文章将深入探讨如何使用Java来实现Excel文件的导入和导出,特别是针对".xls"和".xlsx"这两种常见格式。 1. **Apache POI库**: Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括...
在Java编程环境中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel(.xlsx 和 .xls)文件。本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel...
总结来说,Java导出Excel文件主要依赖于像JExcelApi这样的第三方库,通过这些库提供的API,我们可以轻松地在Java Web应用中创建、填充数据并导出Excel文件。理解这些基本步骤和库的使用,将有助于你在实际项目中实现...
Java操作数据库并导出Excel是一项常见的任务,尤其在数据分析、报表生成或数据迁移等领域。这里主要涉及两个核心技术:Java数据库连接(JDBC)用于与数据库交互,以及Apache POI库用于处理Excel文件。 首先,Java...
在Java编程环境下实现数据及图片导出至Excel文件是一项常见的任务,特别是在处理报表、数据分析等场景时。本文将详细解析如何通过Java代码来完成这一过程,包括如何创建Excel文档、写入数据、插入图片等关键步骤。 ...