`
ntwjf
  • 浏览: 1865 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

java poi导出excel

    博客分类:
  • java
 
阅读更多
  <body>
      <a href="servlet/DownLoadExcelServlet">下载表格</a>  <br>
  </body>

public class DownLoadExcelServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

//		response.setContentType("text/html");
//		PrintWriter out = response.getWriter();
//		out
//				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
//		out.println("<HTML>");
//		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
//		out.println("  <BODY>");
//		out.print("    This is ");
//		out.print(this.getClass());
//		out.println(", using the POST method");
//		out.println("  </BODY>");
//		out.println("</HTML>");
//		out.flush();
//		out.close();
		
		String fileName = "收费报表";
		
		if(request.getHeader("User-Agent").toUpperCase().indexOf("FIREFOX") > 0){
			fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");  //火狐
		}else if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
			fileName = URLEncoder.encode(fileName, "UTF-8");  // IE
		}
		
		response.setContentType("application/vnd.ms-excel");
		response.addHeader("Content-Disposition","attachment;   filename=\"" + fileName + ".xls"  +   "\"");    
		OutputStream os = response.getOutputStream();
		downLoadXLS(os);
		
	}

	
	public void downLoadXLS(OutputStream os){
		try {
//			String path = "f:\\app\\iotest\\n.xls";
//			String postfix = (path.trim().lastIndexOf(".") == -1)?"":path.substring(path.trim().lastIndexOf(".") + 1);
//			if("xls".equalsIgnoreCase(postfix) || "xlsx".equalsIgnoreCase(postfix)){
				HSSFWorkbook wb = new HSSFWorkbook();
				//设置居中
				HSSFCellStyle cellStyle = wb.createCellStyle();
				cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
				cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				
				HSSFCellStyle cellStyle2 = wb.createCellStyle();
				cellStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
				cellStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				
				//设置字体大小
				HSSFFont font  = wb.createFont();      
				font.setFontHeightInPoints((short) 10);//字号      
				font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗   
				cellStyle.setFont(font);
				
				HSSFSheet sheet = wb.createSheet();
				wb.setSheetName(0, "feeUser");
				//设置列宽80个字符的宽度 ; 80 * 256 / 256;
				sheet.setColumnWidth(0, 15 * 256);
				sheet.setColumnWidth(1, 25 * 256);
				sheet.setColumnWidth(2, 15 * 256);
				sheet.setColumnWidth(3, 25 * 256);
				
				for(int i=4;i<=11;i++){
					sheet.setColumnWidth(i, 13 * 256);
				}
				
				//表头
				HSSFRow row = sheet.createRow(0);
				//设置行高
				row.setHeightInPoints(25);
				HSSFCell cell0 = row.createCell(0);
				cell0.setCellValue("序号");
				cell0.setCellStyle(cellStyle);
				HSSFCell cell1 = row.createCell(1);
				cell1.setCellValue("户名(共125户)");
				cell1.setCellStyle(cellStyle);
				HSSFCell cell2 = row.createCell(2);
				cell2.setCellValue("缴费日");
				cell2.setCellStyle(cellStyle);
				HSSFCell cell3 = row.createCell(3);
				cell3.setCellValue("表计");
				cell3.setCellStyle(cellStyle);
				
				row = sheet.createRow(1);
				row.setHeightInPoints(30);
				HSSFCell cell = row.createCell(3);
				cell.setCellValue("表计");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(4);
				cell.setCellValue("通讯地址");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(5);
				cell.setCellValue("起始时间");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(6);
				cell.setCellValue("起始表底");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(7);
				cell.setCellValue("结束时间");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(8);
				cell.setCellValue("结束表底");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(9);
				cell.setCellValue("差值");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(10);
				cell.setCellValue("倍率");
				cell.setCellStyle(cellStyle);
				
				cell = row.createCell(11);
				cell.setCellValue("电量");
				cell.setCellStyle(cellStyle);
				
//				sheet.addMergedRegion(new Region(0,(short)0,1,(short)0));
//				sheet.addMergedRegion(new Region(0,(short)1,1,(short)1));
//				sheet.addMergedRegion(new Region(0,(short)2,1,(short)2));
//				sheet.addMergedRegion(new Region(0,(short)3,0,(short)11));
				
				sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
				sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
				sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
				sheet.addMergedRegion(new CellRangeAddress(0, 0, 3, 11));
				
				List<UserFee> userFeeLis = this.getUserFeeList();
				int i = 2;
				int index = 1;
				for(UserFee uf: userFeeLis){
					HSSFRow hsRow = sheet.createRow(i++);
					for(int j=0;j<=11;j++){
						HSSFCell hsCell = hsRow.createCell(j);
						hsCell.setCellStyle(cellStyle2);
						switch (j) {
						case 0:
							hsCell.setCellValue(index++);
							break;
						case 1:
							hsCell.setCellValue(uf.getUnitName());
							break;
						case 2:
							hsCell.setCellValue(Integer.valueOf(uf.getDay()));
							break;
						case 3:
							hsCell.setCellValue(uf.getDeviceName());
							break;
						case 4:
							hsCell.setCellValue(Double.valueOf(uf.getAddress()));
							break;
						case 5:
							hsCell.setCellValue(uf.getStartDate());
							break;
						case 6:
							hsCell.setCellValue(Double.valueOf(uf.getStartValue()));
							break;
						case 7:
							hsCell.setCellValue(uf.getEndDate());
							break;
						case 8:
							hsCell.setCellValue(Double.valueOf(uf.getEndValue()));
							break;
						case 9:
							hsCell.setCellValue(Double.valueOf(uf.getChazhi()));
							break;
						case 10:
							hsCell.setCellValue(Double.valueOf(uf.getBeilv()));
							break;
						case 11:
							hsCell.setCellValue(Double.valueOf(uf.getElec()));
							break;
						default:
							break;
						}
					}
				}
				
				
				wb.write(os);
				os.flush();
				os.close();
			/*}else{
				System.out.println("不支持的文件类型");
			}*/
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	
	private List<UserFee> getUserFeeList(){
		
		List<UserFee> userFeeList = new ArrayList<UserFee>();
		UserFee uf1 = new UserFee();
		uf1.setUnitName("爱慕1");
		uf1.setDay("25");
		uf1.setDeviceName("爱慕1(面1)(店内)");
		uf1.setAddress("41508348705");
		uf1.setStartDate("2015-11-24");
		uf1.setStartValue("953.11");
		uf1.setEndDate("2015-12-24");
		uf1.setEndValue("1451.88");
		uf1.setChazhi("498.77");
		uf1.setBeilv("1");
		uf1.setElec("498.77");
		
		UserFee uf2 = new UserFee();
		uf2.setUnitName("安世宁4");
		uf2.setDay("25");
		uf2.setDeviceName("安世宁4(201)(室内)");
		uf2.setAddress("041508348593");
		uf2.setStartDate("2015-11-24");
		uf2.setStartValue("42.32");
		uf2.setEndDate("2015-12-24");
		uf2.setEndValue("70.09");
		uf2.setChazhi("27.77");
		uf2.setBeilv("1");
		uf2.setElec("27.77");
		
		UserFee uf3 = new UserFee();
		uf3.setUnitName("百圣百");
		uf3.setDay("25");
		uf3.setDeviceName("百圣百(212)(室内)");
		uf3.setAddress("41508642495");
		uf3.setStartDate("2015-11-24");
		uf3.setStartValue("459.83");
		uf3.setEndDate("2015-12-24");
		uf3.setEndValue("1046.06");
		uf3.setChazhi("586.23");
		uf3.setBeilv("1");
		uf3.setElec("586.23");
		
		userFeeList.add(uf1);
		userFeeList.add(uf2);
		userFeeList.add(uf3);
		
		return userFeeList;
	}

}


public class UserFee {

	private String unitName;
	private String day;
	private String deviceName;
	private String address;
	private String startDate;
	private String startValue;
	private String endDate;
	private String endValue;
	private String chazhi;
	private String beilv;
	private String elec;
	
	public String getUnitName() {
		return unitName;
	}
	public void setUnitName(String unitName) {
		this.unitName = unitName;
	}
	public String getDay() {
		return day;
	}
	public void setDay(String day) {
		this.day = day;
	}
	public String getDeviceName() {
		return deviceName;
	}
	public void setDeviceName(String deviceName) {
		this.deviceName = deviceName;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getStartDate() {
		return startDate;
	}
	public void setStartDate(String startDate) {
		this.startDate = startDate;
	}
	public String getStartValue() {
		return startValue;
	}
	public void setStartValue(String startValue) {
		this.startValue = startValue;
	}
	public String getEndDate() {
		return endDate;
	}
	public void setEndDate(String endDate) {
		this.endDate = endDate;
	}
	public String getEndValue() {
		return endValue;
	}
	public void setEndValue(String endValue) {
		this.endValue = endValue;
	}
	public String getChazhi() {
		return chazhi;
	}
	public void setChazhi(String chazhi) {
		this.chazhi = chazhi;
	}
	public String getBeilv() {
		return beilv;
	}
	public void setBeilv(String beilv) {
		this.beilv = beilv;
	}
	public String getElec() {
		return elec;
	}
	public void setElec(String elec) {
		this.elec = elec;
	}
}

分享到:
评论

相关推荐

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    Java poi 导出Excel

    通用类的Java导出Excel方法,导出内容是使用json传递,字段描述使用ArrayList数组传递,

    JAVA POI导出EXCEL代码

    本篇文章将详细介绍如何使用JAVA POI导出Excel。 一、准备工作 在开始编写代码前,确保已经添加了Apache POI库到项目的依赖管理中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    java使用POI导出 Excel工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    Java POI 导出Excel 2007 实例源代码

    Java POI 是一个开源库...以上就是使用Java POI导出Excel 2007的实例源代码所涉及的主要知识点。通过这些步骤,开发者可以轻松地在Java程序中生成符合需求的Excel文件。在实际项目中,可以根据具体需求进行扩展和优化。

    java poi导出excel,弹窗提示下载

    以下是一些关于如何使用Java POI导出Excel并触发浏览器下载的步骤: 1. **创建Workbook对象**: 首先,你需要创建一个Workbook对象,它是Excel文件的容器。根据你的Excel文件类型,可以选择HSSFWorkbook或...

    java POI导出excel

    这个是利用POI导出excel的源码,需要导入poi包,然后把jsp和action的代码拷贝进去就可以直接运行,很基础的代码,很适合初学者学习。 POI可以自己定义导出excel格式的数据,实例就是这样弄的,希望对初学者有帮助。

    Java实现POI导出Excel

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

    java poi 导出excel jar包

    "java poi 导出excel jar包"这个主题,主要涉及的是如何在Java程序中使用POI库来生成Excel文件,并将相关的依赖jar包整合到项目中。 首先,我们需要理解Apache POI的工作原理。它提供了HSSF(Horrible Spreadsheet ...

    POI导出Excel表格

    在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...

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

    本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel导出功能。 首先,你需要在项目中引入Apache POI依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache....

    java 利用poi导出EXCEL

    提供的`导出EXCEL.docx`文档可能包含了使用POI导出Excel的代码示例。这个文档通常会详细解释每一步操作,包括如何读取数据、如何设置单元格格式以及如何保存文件。 8. **依赖安装** 要使用Apache POI,你需要在...

    java poi 导出excel

    java poi excel数据的导出

    java poi导出excel含工具类以及示例

    String outputFile = "D:\\excel\\excel.xlsx"; OutputStream outputStream = new FileOutputStream(outputFile); UtilExcel utilExcel = new UtilExcel(); String titles = "所属区域,所属车间,当前处理人,描述...

    java poi导出图片到excel示例代码

    Java POI导出图片到Excel示例代码详解 Java POI是Java开发中常用的开源库,用于读写Microsoft Office文件格式,包括Excel、Word、PowerPoint等。今天,我们将介绍如何使用Java POI将图片导出到Excel中。 标题解释 ...

    java_poi实现excel导入导出

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

    POI的EXCEL导出,自动换行

    通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...

    Java POI 生成Excel时显示货币格式

    在Java开发中,Apache POI库是处理Microsoft Office文件(如Word、Excel)的强大工具。本文将深入探讨如何使用Java POI生成带有货币格式的Excel文件,这在财务报告和其他需要精确货币显示的应用场景中尤为关键。 ##...

Global site tag (gtag.js) - Google Analytics