`
yshlin
  • 浏览: 63462 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

导入导出

    博客分类:
  • java
阅读更多

 1、保存到文件

public File queryToFile() {
	List list = null;
	try {
		File file = new File("file.xls");
		WritableWorkbook wwb = Workbook.createWorkbook(file); // 此处建立路径
		WritableSheet ws = wwb.createSheet("Sheet1", 0); // 建立工作簿
		ws.setColumnView(0, 20);

		WritableFont wfc = new WritableFont(WritableFont.createFont("宋体"),
				12, WritableFont.NO_BOLD, false,
				UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
		WritableCellFormat wcfFC = new WritableCellFormat(wfc);
		wcfFC.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
		wcfFC.setVerticalAlignment(VerticalAlignment.CENTRE);
		wcfFC.setAlignment(Alignment.CENTRE);

		WritableFont wfcB = new WritableFont(WritableFont.createFont("宋体"),
				12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
				Colour.BLACK);
		WritableCellFormat wcfFCB = new WritableCellFormat(wfcB);
		wcfFCB.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
		wcfFCB.setVerticalAlignment(VerticalAlignment.CENTRE);
		wcfFCB.setAlignment(Alignment.CENTRE);

		WritableFont wfcR = new WritableFont(WritableFont.createFont("宋体"),
				12, WritableFont.NO_BOLD, false,
				UnderlineStyle.NO_UNDERLINE, Colour.BLUE);
		WritableCellFormat wcfFCR = new WritableCellFormat(wfcR);
		wcfFCR.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
		wcfFCR.setVerticalAlignment(VerticalAlignment.CENTRE);
		wcfFCR.setAlignment(Alignment.RIGHT);

		ws.mergeCells(0, 0, 0, 1); // 合并单元格,(行,列,行,列)
		ws.mergeCells(1, 0, 1, 1);
		ws.mergeCells(2, 0, 2, 1);
		Label t0 = new Label(0, 0, "序号", wcfFCB);
		ws.addCell(t0);
		ws.setColumnView(0, 10);

		for (int i = 0; i < 100; i++) {

			Label ts = new Label(0, (i + 2), (i + 1) + "", wcfFC);
			ws.addCell(ts);
		}

		wwb.write();
		wwb.close();
		return file;
	} catch (Exception e) {
		e.printStackTrace();
	}
	return null;
}

 2、导出到文件

/**
 * 数据导出公共类
 * @author mywhile
 * @version 1.0
 */
@SuppressWarnings("unchecked")
public class ExportExcel{
	/**
	 * Excel导出
	 * 
	 * @param list 源数据
	 * @param title Excel对应列代码和注释(字段名:注释)
	 * @param filename Excel目标文件名
	 * @param response 服务器端响应
	 */
	public static void exportExcel(
			List<Map> list, 
			String title, String filename, 
			HttpServletResponse response) {
		OutputStream outputstream = null;
		jxl.write.WritableWorkbook wwb = null;
		String[] titleary = null;
		String[] titlename = null;
		String[] columnid = null;
		try {
			if (title.equals("")) {
				throw new Exception("filename不能为空!");
			}
			titleary = title.split(",");
			columnid = new String[titleary.length];
			titlename = new String[titleary.length];
			for (int j = 0; j < titleary.length; j++) {
				if (titleary[j] != null && !titleary[j].equals("")) {
					String curtitle = titleary[j];
					if (curtitle.indexOf(":") < 0) {
						throw new Exception("title格式不正确");
					}
					columnid[j] = curtitle.split(":")[0];
					titlename[j] = curtitle.split(":")[1];
				}
			}
			String filenameconvert = new String(filename.getBytes(), "iso-8859-1");
			response.setCharacterEncoding("utf-8");
			response.setContentType("application/vnd.ms-excel");
			response.setHeader("Content-Disposition", "attachment; filename=" + filenameconvert + ".xls");
			outputstream = response.getOutputStream();
			wwb = jxl.Workbook.createWorkbook(outputstream);
			jxl.write.WritableSheet sheet = wwb.createSheet(filename, 0);
			int index = 0;
			for (int j = 0; j < titlename.length; j++) {
				jxl.write.Label lable = new jxl.write.Label(j, index, titlename[j]);
				sheet.addCell(lable);
			}
			index = index + 1;
			for (Map map : list) {
				for (int i = 0; i < columnid.length; i++) {
					String tmp = map.get(columnid[i]) != null ? map.get(columnid[i]).toString() : "";
					jxl.write.Label lable = new jxl.write.Label(i, index, tmp);
					sheet.addCell(lable);
				}
				index++;
			}
			// 写入数据
			wwb.write();
			wwb.close();
			outputstream.close();
			wwb = null;
			outputstream = null;
		} catch (Exception ex) {
			ex.printStackTrace();

		} finally {
			if (wwb != null) {
				try {
					wwb.close();
					wwb = null;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			if (outputstream != null) {
				try {
					outputstream.close();
					outputstream = null;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
	/**
	 * Excel导出:主子表
	 * @param list 源数据
	 * @param sonKey 子表的Key值
	 * @param title Excel对应列代码和注释(字段名:注释,字段名:注释,字段名:注释.....)
	 * @param sonTitle Excel对应列代码与注释(字段名:注释,字段名:注释,字段名:注释.....):子表
	 * @param filename Excel目标文件名
	 * @param response 服务器端响应
	 * 
	 */
	public static void exportExcelPS(
			List<Map> list,
			String sonKey, String title, 
			String sonTitle, String filename, 
			HttpServletResponse response) {
		OutputStream outputstream = null;
		jxl.write.WritableWorkbook wwb = null;
		String[] pTitleAry = null, sTitleAry = null;
		String[] pTitleNam = null, sTitleNam = null;
		String[] pColumnId = null, sColumnId = null;
		try {
			if (title.equals("") || sonTitle.equals("")) {
				throw new Exception("filename不能为空!");
			}
			pTitleAry = title.split(",");
			pColumnId = new String[pTitleAry.length];
			pTitleNam = new String[pTitleAry.length];
			for (int j = 0; j < pTitleAry.length; j++) {
				if (pTitleAry[j] != null && !pTitleAry[j].equals("")) {
					String curtitle = pTitleAry[j];
					if (curtitle.indexOf(":") < 0) {
						throw new Exception("title格式不正确");
					}
					pColumnId[j] = curtitle.split(":")[0];
					pTitleNam[j] = curtitle.split(":")[1];
				}
			}
			sTitleAry = sonTitle.split(",");
			sColumnId = new String[sTitleAry.length];
			sTitleNam = new String[sTitleAry.length];
			for (int j = 0; j < sTitleAry.length; j++) {
				if (sTitleAry[j] != null && !sTitleAry[j].equals("")) {
					String curtitle = sTitleAry[j];
					if (curtitle.indexOf(":") < 0) {
						throw new Exception("title格式不正确");
					}
					sColumnId[j] = curtitle.split(":")[0];
					sTitleNam[j] = curtitle.split(":")[1];
				}
			}
			String filenameconvert = new String(filename.getBytes(), "iso-8859-1");
			response.setCharacterEncoding("utf-8");
			response.setContentType("application/vnd.ms-excel");
			response.setHeader("Content-Disposition", "attachment; filename=" + filenameconvert + ".xls");
			outputstream = response.getOutputStream();
			wwb = jxl.Workbook.createWorkbook(outputstream);
			jxl.write.WritableSheet sheet = wwb.createSheet(filename, 0);
			int index = 0;
			for (int j = 0; j < pTitleNam.length; j++) {
				jxl.write.Label lable = new jxl.write.Label(j, index, pTitleNam[j]);
				sheet.addCell(lable);
			}
			index = index + 1;
			for (int j = 0;j<list.size();j++) {
				Map map = (Map)list.get(j);
				for (int i = 0; i < pColumnId.length; i++) {
					String tmp = map.get(pColumnId[i]) != null ? map.get(pColumnId[i]).toString() : "";
					jxl.write.Label lable = new jxl.write.Label(i, index, tmp);
					sheet.addCell(lable);
				}
				index++;
				for (int m = 0; m < sTitleNam.length; m++) {
					jxl.write.Label lable = new jxl.write.Label(m+1, index, sTitleNam[m]);
					sheet.addCell(lable);
				}
				index++;
				if(map.get(sonKey) != null){
					List son_list = (List)map.get(sonKey);
					for(int k = 0;k<son_list.size();k++){
						Map map_son = (Map)son_list.get(k);
						for (int i = 0; i < sColumnId.length; i++) {
							String tmp = map_son.get(sColumnId[i]) != null ? map_son.get(sColumnId[i]).toString() : "";
							jxl.write.Label lable = new jxl.write.Label(i+1, index, tmp);
							sheet.addCell(lable);
						}
						index++;
					}
				}
			}
			// 写入数据
			wwb.write();
			wwb.close();
			outputstream.close();
			wwb = null;
			outputstream = null;
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			if (wwb != null) {
				try {
					wwb.close();
					wwb = null;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			if (outputstream != null) {
				try {
					outputstream.close();
					outputstream = null;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
}

 

分享到:
评论

相关推荐

    UAP标准导入导出功能 UAP标准导入导出功能

    《UAP标准导入导出功能详解》 在IT领域,数据的导入与导出是日常工作中不可或缺的一部分。尤其是在企业级应用系统中,如NC65这样的企业管理软件,UAP(通用应用平台)提供了标准化的导入导出功能,使得数据管理更为...

    数据导入导出 (java)

    在IT行业中,数据导入导出是一项基础且重要的任务,特别是在Java开发中。本文将深入探讨如何使用Java进行数据的导入和导出,包括Excel、XML和TXT等常见格式的处理。 首先,我们要理解数据导入导出的核心目的:将...

    金蝶BOS开发之导入导出

    ### 金蝶BOS开发之导入导出 #### 一、引言 金蝶BOS平台作为一款功能强大的企业级应用开发平台,为企业提供了灵活高效的应用定制与开发能力。其中,数据导入导出功能是企业在日常运营过程中经常需要用到的一个重要...

    Oracle数据库导入导出工具

    在日常运维和开发过程中,数据的导入导出是非常常见的任务,这包括数据迁移、备份、恢复等场景。本工具是一款基于Java编写的桌面应用程序,专为Oracle数据库的导入导出提供便利。 1. **Oracle数据库导入导出的重要...

    T5导入导出软件v2.3.398免费绿色版

    T5导入导出工具是一款好用的数据导入导出工具。这款工具适用于T5无线盘点机,可以帮助用户实现导入导出商品信息配置、导出盘点配置、导出数据库盘点配置等功能。还有详细的使用说明,感兴趣的朋友千万不要错过了。 ...

    Oracle 19c 备份恢复-导入导出

    Oracle 19c 备份恢复-导入导出 Oracle 19c 备份恢复-导入导出是指使用 Oracle 数据库提供的工具 exp 和 imp 实现数据库的备份恢复和数据的导入导出。本文将详细介绍 Oracle 19c 备份恢复-导入导出的基本命令、工作...

    asp将EXCEL导入导出数据库原程序

    在ASP中处理Excel数据导入导出是一项常见的需求,特别是在数据处理和报表生成的场景下。这个"asp将EXCEL导入导出数据库原程序"提供了一个解决方案,能够方便地将Excel中的数据存入MSSQL数据库,同时也能将数据库中的...

    Allegro 软件中的光绘层的导入导出设置

    Allegro 软件中的光绘层的导入导出设置 Allegro 软件中的光绘层的导入导出设置是 CAD 设计中非常重要的一个方面。由于每个人的设计习惯不同,因此在设计中查看的光绘层也不同。为了解决这个问题,我们可以使用 ...

    易语言EXCEL快速导入导出

    本示例将详细介绍如何利用易语言进行EXCEL快速导入导出的操作。 首先,我们需要了解易语言中与Excel相关的基础组件和函数。易语言提供了一个名为“通用数据访问组件”的模块,其中包含了读取和写入Excel文件所需的...

    组策略导入导出工具免安装

    本文将详细讲解如何利用“组策略导入导出工具”进行有效管理。 首先,组策略对象(Group Policy Object, GPO)是组策略的核心,它包含了针对AD环境中用户和计算机的一系列设置。GPO可以应用到域、站点或组织单位...

    组态王变量导入导出补丁

    "组态王变量导入导出补丁"是一个针对组态王7.5SP2版本的修复工具,专门解决在创建并导出结构变量后可能导致软件崩溃的问题。在深入讲解这个问题和补丁之前,我们先来了解一下组态王及其相关概念。 组态王是一款广泛...

    使用Springboot实现excel的导入导出

    在Spring Boot中实现Excel的导入导出可以通过POI库来实现,POI是一个开源的Java库,用于处理Microsoft Office格式文件,包括Excel。一个简单的示例,演示如何在Spring Boot项目中使用POI来实现Excel的导入导出功能。...

    Redis数据导入导出以及数据迁移的4种方法详解

    Redis 数据导入导出和数据迁移是 Redis 管理中的重要环节,对于数据备份、故障恢复、集群扩展等场景有着至关重要的作用。本文将详细解析 Redis 数据导入导出的4种方法。 首先,我们来看第一种方法:使用 AOF...

    易语言EXCEL数据导入导出

    首先,我们要理解易语言中的“EXCEL数据导入导出”涉及的主要知识点。易语言提供了与Microsoft Excel交互的API接口或库,如COM组件,允许程序员通过调用Excel对象模型的方法来操作Excel文件。在易语言中,我们可以...

    QT 高效 导入导出excel , tableWidget显示

    以上就是QT高效导入导出Excel并使用tableWidget显示的基本流程和优化策略。实际开发时,根据项目需求和资源限制,可能还需要进行额外的错误处理和功能完善。这个程序虽然不完善,但提供了清晰的开发思路,有助于快速...

    PLSQL导入导出数据方法 .doc

    PLSQL Developer是一款强大的Oracle数据库开发工具,它提供了方便的数据导入导出功能,使得数据库对象和数据的迁移变得简单。在本文中,我们将详细介绍如何在PLSQL Developer中进行数据的导入导出。 首先,我们来看...

    sql server 数据库导入导出方法

    SQL Server 数据库导入导出的方法 SQL Server 数据库导入导出是数据库管理员和开发者常用的操作,目的是将数据库备份到本地或网络存储设备中,以便在需要时恢复数据库或将数据库迁移到其他服务器上。下面将详细介绍...

    Excel导入导出工具包

    万能的Excel导入导出工具. 支持从List中导出. 支持从List中导入导出. 支持从List里面还有List&lt;POJO&gt;&gt;中导入导出. 支持导出类似课程表结构类型纵表. 支持国际化. 支持数据字典. 支持单元格中下拉框数据校验. 支持自动...

    excel导入导出性能优化

    在IT行业中,Excel导入导出性能优化是一个常见且重要的议题,尤其对于处理大量数据的应用程序。Excel文件格式广泛用于数据存储和分析,但其导入和导出操作可能会对系统性能产生显著影响,尤其是在高并发环境下。以下...

Global site tag (gtag.js) - Google Analytics