`
yshlin
  • 浏览: 61337 次
  • 性别: 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();
				}
			}
		}
	}
}

 

分享到:
评论

相关推荐

    Excel导入导出工具包

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

    Java实现Excel导入导出

    Excel源代码,导入导出各种工具类 &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....

    导入导出操作说明

    oracle的导入导出操作说明,用来指导开发人员进行导入导出!

    java文件上execl报表导入导出

    功能简介 execl报表导入导出 基于wab开发 功能简介 execl报表导入导出 基于wab开发 功能简介 execl报表导入导出 基于wab开发 功能简介 execl报表导入导出 基于wab开发

    Java实现Excel导入导出操作详解.pptx.pptx

    Java实现Excel导入导出简介 Java实现Excel导入导出是通过Java语言编写的程序,将数据从Excel文件中读取或写入到Excel文件中。这种方式可以实现数据的批量处理和分析,提高工作效率。 Java实现Excel导入导出的应用...

    易语言超级列表框excel导入导出

    超级列表框导入excel和导出excel(支持导入导出表头)用黑夜上传的LibXL模块弄的,。@田心南。Tags:ExcelEXCEL导入导出excel表。

    zookeeper配置内容导入导出工具

    一款好用的zookeeper配置内容导入导出工具,适用平台是windows,但是也可以修改run.bat为shell脚本,适合linux。 带图形界面,修改config中的config.xml,添加需要管理的zookeeper地址信息,同时可以定义两个用户...

    Excel导入导出项目 简单的

    Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出Excel导入导出

    Java poi导入导出EXCEL工具类(兼容各版本)

    概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...

    MSProject文件导入导出

    MSProject文件导入导出,先导出到服务器,再下载到客户端,下载完成后再从服务器删除(代码中没有)

    POI数据Excel导入导出jar

    该文件中包含了所有java项目中针对excel导入导出所需的jar包集合。 -------------------------------------- 将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用...

    excel通过配置实现导入导出和校验

    excel通过配置实现导入导出和校验,只要写配置文件就可以定义导出样式和导入的校验规则,可以直接到项目中使用

    informix数据库导入导出

    informix数据库导入导出informix数据库导入导出informix数据库导入导出informix数据库导入导出

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

    UAP标准导入导出功能

    java_poi实现excel导入导出

    java_poi实现excel导入导出功能,有详细的注解

    Java POI EXCEL导入导出

    Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出...

    导入导出组件.rar

    导入导出组件导入导出组件导入导出组件导入导出组件导入导出组件

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

    主要介绍了Redis数据导入导出以及数据迁移的4种方法详解,需要的朋友可以参考下

    db2_导入导出

    db2_导入导出db2_导入导出db2_导入导出db2_导入导出db2_导入导出db2_导入导出db2_导入导出db2_导入导出db2_导入导出db2_导入导出

    java swing开发导入导出excel功能

    此代码为java运用poi3.8插件实现运用模版导入导出复杂excel

Global site tag (gtag.js) - Google Analytics