`
Luob.
  • 浏览: 1584558 次
  • 来自: 上海
社区版块
存档分类
最新评论

使用 POI导出到Excel

    博客分类:
  • Java
阅读更多
//字体背景颜色 边框的设置 
http://blog.csdn.net/sinat_34093604/article/details/53432545

http://blog.csdn.net/hantiannan/article/details/5312133


private String productEcel(List<BiUserAction> list) throws Exception {
		
		// 创建工作表和标题
		HSSFWorkbook workbook = null;
		try {
			workbook = new HSSFWorkbook();
		} catch (Exception e) {
			e.printStackTrace();
		}
		int rowIndex=0;
		HSSFSheet sheet = workbook.createSheet("贝壳奖励统计"); // 创建工作区
		/*
		HSSFRow row_title = sheet.createRow(0); // 创建一行引用对象
		HSSFFont title_font = workbook.createFont(); // 创建标题的字体

		title_font.setFontHeightInPoints((short) 8);
		title_font.setFontHeight((short) HSSFFont.BOLDWEIGHT_NORMAL);
		title_font.setColor((short) (HSSFFont.COLOR_NORMAL));

		HSSFCellStyle title_style = workbook.createCellStyle();// 创建样式
		title_style.setFont(title_font);
		title_style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		
		//合并 第一个的  0 到 3  的单元格
		Region region=new Region(0,(short)0,0,(short)3);
		sheet.addMergedRegion(region);
		
		HSSFCell cell_title = row_title.createCell((short) 0);// 创建单元格引用对象
		cell_title.setCellStyle(title_style);
		cell_title.setCellValue("贝壳奖励统计");*/
		
		// 创建数据表头
		String titles[] = { "序号", "奖励项目", "贝壳总数", "经验总数"};


		//定义字体
		HSSFFont celltbnamefont = workbook.createFont();
		celltbnamefont.setFontHeightInPoints((short) 12);  //字体大小
		celltbnamefont.setColor((short) (HSSFFont.COLOR_NORMAL));  //颜色
		celltbnamefont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //粗体
		
		//定义列的样式 
		HSSFCellStyle items_style = workbook.createCellStyle();
		items_style.setAlignment((short) HSSFCellStyle.ALIGN_CENTER); //设置对其方式
		items_style.setFont(celltbnamefont);
		items_style.setWrapText(true); //设置自动换行
		
		HSSFRow row = sheet.createRow((short) rowIndex);

		//加入 标题
		for (int i = 0; i < titles.length; i++) {
			HSSFCell cell = row.createCell(i,Cell.CELL_TYPE_STRING); //设置 列类型
			if (i == 1 || i == 3 || i == 2 || i == 5) {
				sheet.setColumnWidth(i, 5335);
			}else{
				//sheet.setColumnWidth((short) i, (short) 3335);
				sheet.setColumnWidth(i, 3335);
			}
			cell.setCellValue(titles[i]);
			cell.setCellStyle(items_style);
		}

		//定义 date 的数据样式
		HSSFCellStyle datestyle = workbook.createCellStyle();
		HSSFDataFormat df = workbook.createDataFormat();
		datestyle.setAlignment((short) HSSFCellStyle.ALIGN_LEFT);
		datestyle.setDataFormat(df.getFormat("yyyy-mm-dd hh:mm:ss"));

		//定义 int 的数据样式
		HSSFCellStyle intdatestyle = workbook.createCellStyle();
		intdatestyle.setAlignment((short) HSSFCellStyle.ALIGN_LEFT);

		//定义 float 的数据样式
		HSSFCellStyle floatdatestyle = workbook.createCellStyle();
		floatdatestyle.setAlignment((short) HSSFCellStyle.ALIGN_LEFT);
		df = workbook.createDataFormat();
		floatdatestyle.setDataFormat(df.getFormat("#.##"));

		//定义 long 的数据样式
		HSSFCellStyle longdatestyle = workbook.createCellStyle();
		longdatestyle.setAlignment((short) HSSFCellStyle.ALIGN_LEFT);

		
		HSSFCell cell;
		Iterator<BiUserAction> it =list.iterator();
		while (it.hasNext()) {
			HSSFRow dataRow = sheet.createRow((short) (++rowIndex));
			BiUserAction userAction = it.next();

			cell = dataRow.createCell(0,Cell.CELL_TYPE_NUMERIC);
			cell.setCellStyle(intdatestyle);
			cell.setCellValue(rowIndex);

			cell = dataRow.createCell(1,Cell.CELL_TYPE_STRING);
			String ruleName = userAction.getRuleName();
			cell.setCellValue(ruleName);

			cell = dataRow.createCell(2,Cell.CELL_TYPE_NUMERIC);
			cell.setCellStyle(longdatestyle);
			cell.setCellValue(userAction.getCredits());

			cell = dataRow.createCell(3,Cell.CELL_TYPE_NUMERIC);
			cell.setCellStyle(longdatestyle);
			cell.setCellValue(userAction.getExperience());
		}
		HSSFRow dataRow = sheet.createRow((short) (++rowIndex));
		cell = dataRow.createCell(0,Cell.CELL_TYPE_STRING);
		cell.setCellStyle(intdatestyle);
		cell.setCellValue("合计:");

		cell = dataRow.createCell(1,Cell.CELL_TYPE_STRING);
		cell.setCellValue("");

		//添加 公式
		cell = dataRow.createCell(2,Cell.CELL_TYPE_NUMERIC);
		cell.setCellStyle(longdatestyle);
		cell.setCellFormula("SUM(" + getColLetter(2) + sheet.getRow(2).getCell(2).getRowIndex() + ":" + getColLetter(2) +sheet.getRow(sheet.getLastRowNum()).getCell(2).getRowIndex() + ")");
		//添加 公式
		cell = dataRow.createCell(3,Cell.CELL_TYPE_NUMERIC);
		cell.setCellStyle(longdatestyle);
		cell.setCellFormula("SUM(" + getColLetter(3) + sheet.getRow(2).getCell(3).getRowIndex() + ":" + getColLetter(3) +sheet.getRow(sheet.getLastRowNum()).getCell(3).getRowIndex() + ")");
		
		
		String workDir = this.getServlet().getServletContext().getRealPath("/");

		String workddd = workDir.replaceAll("\\\\", "/");

		Calendar calendar = Calendar.getInstance();
		String month = calendar.get(Calendar.YEAR) + "/"+ (calendar.get(Calendar.MONTH) + 1);
		String filePath = "newsxls/adxls/" + month + "/";
		File f = new File(workDir + filePath);
		if (!f.isDirectory()) {
			f.mkdirs();
		}

		String fileNameCode = java.util.UUID.randomUUID().toString();
		String completeFilePath = workddd + filePath + fileNameCode + ".xls";
		FileOutputStream fileOut = new FileOutputStream(completeFilePath);
		this.getRequest().getSession(true).setAttribute("completeFilePath",
				completeFilePath);

		workbook.write(fileOut);
		fileOut.flush();
		fileOut.close();
		return completeFilePath;
	}
	
	 /**
	  * 将列的索引换算成ABCD字母,这个方法要在插入公式时用到。
	  * @param colIndex 列索引。
	  * @return ABCD字母。
	  */
	 private String getColLetter(int colIndex)
	 {
	  String ch = "";
	     if (colIndex  < 26)
	         ch = "" + (char)((colIndex) + 65);
	     else
	        ch = "" + (char)((colIndex) / 26 + 65 - 1) + (char)((colIndex) % 26 + 65);
	     return ch;
	 }
0
1
分享到:
评论

相关推荐

    java使用POI导出 Excel工具类

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

    POI导出Excel文件

    以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....

    使用poi方式导出excel(分多个sheet导出)

    七、导出Excel文件 最后,将Workbook写入OutputStream或File,完成导出: ```java try (FileOutputStream out = new FileOutputStream("output.xlsx")) { workbook.write(out); } catch (IOException e) { e....

    struts2 poi导出到excel

    Struts2和Apache POI是Java开发中处理Web应用程序数据导出到Excel的常用工具。...以上就是使用Struts2和Apache POI导出数据到Excel的基本流程和关键知识点,实际应用中可能需要根据具体需求进行调整和优化。

    使用POI,实现excel文件导出,图片url导出文件,图片和excel文件导出压缩包

    使用POI导出Excel文件** 导出Excel文件主要涉及以下几个步骤: - **创建Workbook对象**:这是Excel文件的容器,可以使用`XSSFWorkbook`(针对.xlsx)或`HSSFWorkbook`(针对.xls)创建。 - **创建Sheet对象**:...

    POI导出 POI导出 POI导出

    POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...

    java poi导出Excel上传实例 可直接使用

    通过上述步骤,你就创建了一个基本的Java程序,能够使用Apache POI导出Excel文件。在项目中,你可以根据实际需求对这个示例进行扩展,比如从数据库读取数据、动态生成列名或自定义样式。这个"poi2"文件可能是包含此...

    springboot+poi导出指定格式Excel模板

    springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...

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

    使用Java POI,可以将图片导出到Excel中,这需要使用到Drawings类和Picture类。首先,需要创建一个Drawings对象,然后使用Drawings对象的addPicture方法将图片添加到Excel中。 3. 使用Java POI下载Excel文件 在示例...

    POI导出Excel万级数据分页实现 解决内存溢出问题

    然而,当处理大量数据时,直接使用POI导出Excel可能会遇到内存溢出问题,因为POI将整个工作簿加载到内存中。本项目演示了如何通过分页方式解决这个问题,避免一次性加载过多数据导致的性能瓶颈。 首先,理解POI的...

    poi导出excel表格

    本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...

    java 使用poi导出excel工具类

    java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!

    POI导出Excel表格

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

    使用poi从数据库导出excel表的示例

    首先,让我们深入理解"struts1"和"poi导出excel"这两个标签。Struts1是Apache软件基金会的一个开源MVC框架,它主要用于构建基于Java的Web应用程序。而Apache POI则是一个用于处理Microsoft Office文档的库,特别是...

    poi导出excel生成下拉列表

    poi作为导出excel常用的工具,方便快捷。对于excel指定下拉列表的列,如何生成呢?本文提供如何生成下拉列表的excel列

    POI的EXCEL导出,自动换行

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

    poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值)

    poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值), poi导出导入封装(使用注解建立实体与excel映射关系+反射设置实体属性值) poi导出导入封装(使用注解建立实体与excel映射关系+反射设置...

    poi导出excel参考方法

    在上面的代码中,我们可以看到使用POI导出Excel文档的方法。首先,我们需要创建一个Workbook对象,然后使用Workbook对象创建一个Sheet对象。接着,我们可以使用Sheet对象将数据写入Excel文档中。最后,我们可以使用...

    java poi导出excel

    以上就是使用Java POI导出Excel的基本步骤。你可以根据实际需求调整代码,例如添加数据遍历、样式设置、图表生成等功能。确保正确管理资源,避免内存泄漏,特别是在服务器端处理大量数据时。记得在完成后关闭工作簿...

    java_poi实现excel导入导出

    在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java POI Java POI 是一个开源的 Java 库,由 Apache 软件基金会维护。它提供了一系列的 API,用于处理 Microsoft Office 文件...

Global site tag (gtag.js) - Google Analytics