`
雪馨25
  • 浏览: 130116 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

一、功能简述

点击“导出”按钮,弹出文件选择对话框,选择存放路径,填写文件名,点击“导出”按钮导出界面上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导出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和XML文件是一项常见的任务,特别是在数据导入导出、报表生成以及数据交换等场景。本文将详细讲解如何使用Java进行Excel和XML文件的解析及操作。 一、Excel文件处理 1. **Apache POI库**:...

    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 文件。

    java导出excel、xml

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

    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 poi 做EXCEL导出(包含图片) 完整版

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

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

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

    java实现Excel导出

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

    XML文件导出为本地excel文件

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

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

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

    javaWeb导出Excel文件

    总结来说,Java导出Excel文件主要依赖于像JExcelApi这样的第三方库,通过这些库提供的API,我们可以轻松地在Java Web应用中创建、填充数据并导出Excel文件。理解这些基本步骤和库的使用,将有助于你在实际项目中实现...

    java操作数据库 导出excel

    Java操作数据库并导出Excel是一项常见的任务,尤其在数据分析、报表生成或数据迁移等领域。这里主要涉及两个核心技术:Java数据库连接(JDBC)用于与数据库交互,以及Apache POI库用于处理Excel文件。 首先,Java...

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

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

Global site tag (gtag.js) - Google Analytics