1、有模板,文件头标题都写好,只要循环添加数据的方法
package com.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; public class PoiTestExcel { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { InputStream in = new FileInputStream("D:\\report\\1111.xls"); Workbook work = new HSSFWorkbook(in); // 得到excel的第0张表 Sheet sheet = work.getSheetAt(0); // 得到第1行的第一个单元格的样式 Row rowCellStyle = sheet.getRow(1); CellStyle columnOne = rowCellStyle.getCell(0).getCellStyle(); // 这里面的行和列的数法与计算机里的一样,从0开始是第一 // 填充title数据 Row row = sheet.getRow(0); Cell cell = row.getCell(0); cell.setCellValue("2010年花名测"); int i = 2;//计数器 int number = 0; // 得到行,并填充数据和表格样式 for (;i < 10; i++) { row = sheet.createRow(i);// 得到行 cell = row.createCell(0);// 得到第0个单元格 cell.setCellValue("琳"+i);// 填充值 cell.setCellStyle(columnOne);// 填充样式 cell = row.createCell(1); cell.setCellValue("女"); cell.setCellStyle(columnOne);// 填充样式 cell = row.createCell(2); cell.setCellValue(i+20); cell.setCellStyle(columnOne);// 填充样式 // .....给每个单元格填充数据和样式 number++; } //创建每个单元格,添加样式,最后合并 row = sheet.createRow(i); cell = row.createCell(0); cell.setCellValue("总计:" + number + "个学生");// 填充值 cell.setCellStyle(columnOne); cell = row.createCell(1); cell.setCellStyle(columnOne); cell = row.createCell(2); cell.setCellStyle(columnOne); // 合并单元格 sheet.addMergedRegion(new CellRangeAddress(i,i,0,2)); FileOutputStream os = new FileOutputStream("D:\\report\\workbook.xls"); work.write(os); os.close(); } catch (FileNotFoundException e) { System.out.println("文件路径错误"); e.printStackTrace(); } catch (IOException e) { System.out.println("文件输入流错误"); e.printStackTrace(); } } }
2、无模板生成Excel的方法
package com.test; import java.io.FileOutputStream; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFHyperlink; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.util.CellRangeAddress; public class PoiCreateExcel { public static void main(String[] args) throws Exception { // 创建Excel的工作书册 Workbook,对应到一个excel文档 HSSFWorkbook wb = new HSSFWorkbook(); // 创建Excel的工作sheet,对应到一个excel文档的tab HSSFSheet sheet = wb.createSheet("sheet1"); // 设置excel每列宽度 sheet.setColumnWidth(0, 4000); sheet.setColumnWidth(1, 3500); // 创建字体样式 HSSFFont font = wb.createFont(); font.setFontName("Verdana"); font.setBoldweight((short) 100); font.setFontHeight((short) 300); font.setColor(HSSFColor.BLUE.index); // 创建单元格样式 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); // 设置边框 style.setBottomBorderColor(HSSFColor.RED.index); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setFont(font);// 设置字体 // 创建Excel的sheet的一行 HSSFRow row = sheet.createRow(0); row.setHeight((short) 500);// 设定行的高度 // 创建一个Excel的单元格 HSSFCell cell = row.createCell(0); // 合并单元格(startRow,endRow,startColumn,endColumn) sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2)); // 给Excel的单元格设置样式和赋值 cell.setCellStyle(style); cell.setCellValue("hello world"); // 设置单元格内容格式 HSSFCellStyle style1 = wb.createCellStyle(); style1.setDataFormat(HSSFDataFormat.getBuiltinFormat("h:mm:ss")); style1.setWrapText(true);// 自动换行 row = sheet.createRow(1); // 设置单元格的样式格式 cell = row.createCell(0); cell.setCellStyle(style1); cell.setCellValue(new Date()); // 创建超链接 HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL); link.setAddress("http://www.baidu.com"); cell = row.createCell(1); cell.setCellValue("百度"); cell.setHyperlink(link);// 设定单元格的链接 FileOutputStream os = new FileOutputStream("D:\\report\\workbook.xls"); wb.write(os); os.close(); } }
注:HSSFWorkbook,XSSFWorkbook的区别:前者是解析出来excel 2007 以前版本的,后缀名为xls的,后者是解析excel 2007 版的,后缀名为xlsx。
3、无模板且不需要储存直接通过浏览器下载的方式
package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.Colour; import jxl.format.VerticalAlignment; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; /** * 直接通过浏览器下载Excel表格 * * @author admin */ @SuppressWarnings("serial") public class ExcelPoiTest extends HttpServlet { public ExcelPoiTest() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { /********* 创建excel阶段 *********/ String exportfileName = "poiExcel导出测试"; //设置响应方式 response.setContentType("application/vnd.ms-excel;charset=utf-8"); String name = new String((exportfileName).getBytes("gbk"),"iso8859-1"); response.setHeader("Content-Disposition", "attachment;filename="+ name); // 创建execl第一行数句(标题) // 标题字体 jxl.write.WritableFont wfc = new jxl.write.WritableFont( jxl.write.WritableFont.COURIER, 13, jxl.write.WritableFont.NO_BOLD, true); jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc); wcfFC.setAlignment(jxl.format.Alignment.CENTRE); wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); wcfFC.setBackground(Colour.GREY_50_PERCENT); // 创建一个excel文档 WritableWorkbook book = Workbook.createWorkbook(response.getOutputStream()); // 创建sheet工作表+ ".xls" WritableSheet sheet = book.createSheet(exportfileName + "数据报表.xls",0); // 创建字体对象 WritableFont font = new WritableFont(WritableFont.createFont("黑体"),13, WritableFont.NO_BOLD); WritableFont font2 = new WritableFont(WritableFont.createFont("黑体"), 12, WritableFont.NO_BOLD); // 创建格式化对象 WritableCellFormat format = new WritableCellFormat(); format.setFont(font);// 设置字体 format.setAlignment(Alignment.CENTRE);// 设置居中 format.setVerticalAlignment(VerticalAlignment.CENTRE); format.setBackground(Colour.GRAY_25);// 设置背景色 WritableCellFormat format2 = new WritableCellFormat(); format2.setFont(font2);// 设置字体 format2.setAlignment(Alignment.CENTRE);// 设置居中 format2.setVerticalAlignment(VerticalAlignment.CENTRE); int cols = 3; //列数 String headArray[] = {"姓名","性别","年龄"}; /*********** 开始写第二行已下的数据 ************/ for (int i = 0; i < headArray.length; i++) { sheet.addCell(new Label(i,cols, headArray[i], format)); //10:表示每列的宽 sheet.setColumnView(i,10); } for (int i = 0; i < 3; i++) { sheet.addCell(new Label(0, i + (cols + 1), "熊敏",format2)); sheet.addCell(new Label(1, i + (cols + 1), "男",format2)); sheet.addCell(new Label(2, i + (cols + 1), "28",format2)); } //加入标题 sheet.mergeCells(0, 0, cols - 1, cols - 1); sheet.addCell(new jxl.write.Label(0, 0,"poi导出文件测试", wcfFC)); //写execel文档 book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); System.out.println("存储失败"); } } public void init() throws ServletException { } }
说明:完整例子及jar见附件
相关推荐
在这个“struts2+poi导出excel表格完整例子”中,我们将深入探讨这两个工具如何协同工作,实现从Web应用导出数据到Excel电子表格的功能。 首先,让我们了解一下Struts2的工作原理。Struts2基于拦截器(Interceptor...
在Java开发中,对于数据的导入导出,尤其是Excel表格,是一种非常常见的需求。而easypoi为我们提供了简洁的方式来实现这一功能。 ### eapoi导出导入概述 easypoi是一个基于Apache POI的简单易用的Java Excel操作...
下面将详细介绍如何使用POI库创建一个导出Excel的工具类。 #### 一、环境准备 为了能够顺利运行示例代码,请确保项目环境中已安装了Apache POI库。可以通过Maven或Gradle进行依赖管理,或者手动下载jar包并添加到...
当你需要从网页数据导出Excel时,Easy POI提供了一种方便的方式。首先,你需要将HTML内容转换为表格数据结构,例如使用Jsoup解析HTML获取表格元素。然后,利用Easy POI的API,创建一个Excel工作簿对象,将HTML表格...
EasyPOI是一个基于Apache POI的轻量级Java库,它简化了Excel文件的读写操作,特别是对于批量处理和模板导出功能。这篇博文的源码提供了一个使用EasyPOI导出包含图片的Excel模板数据的示例,这在报表生成、数据分析和...
在标题和描述中提到的"java利用poi操作excel所需要的jar包"是POI项目的核心依赖,包括以下几个部分: 1. **poi-3.14.jar**: 这是Apache POI的主要库,提供了对低级HSSF(Horrible Spreadsheet Format)的支持,用于...
对于"原样式导出",这意味着在导出Excel时,不仅数据会被保留,而且包括单元格的字体、颜色、背景色、边框、对齐方式、公式、图表、图片等在内的所有样式和格式都会被完整地复制到新的Excel文件中。这对于需要精确...
总结,EasyUI的datagrid导出Excel工具类为开发者提供了一种便捷的方式,通过前后端配合,将网页中的数据快速转换成Excel文件,满足了用户对数据管理的需求。在实际应用中,需要注意数据安全和性能优化,确保功能的...
本文将深入探讨如何实现“导出Excel表格”这一功能,并结合描述中的“只需要把代码拷贝到项目里面,在把数据源绑定就可以”的提示,为你提供一个简单而实用的方法。 首先,我们要理解数据导出的基本流程。这个过程...
标题中的“POI导入导出excel jar”是指Apache POI项目,这是一个开源的Java库,专门用于处理Microsoft Office格式的文件,尤其是Excel。在描述中提到的“只有两个包”,指的是可能提供的压缩文件包含了Apache POI的...
它的名称 "Poor Obfuscation Implementation" 是一种幽默的自我贬低,暗示其最初可能是简单且不那么复杂的实现。 POI 主要包含以下几个关键组件: 1. **HSSF**: 支持读写 Microsoft Excel 的老式 XLS 格式。 2. **...
在.NET框架中,导出Excel表格是常见的任务,特别是在数据报告、数据分析或用户交互的场景下。本篇文章将深入探讨几种不同的方法,帮助开发者在.NET环境中高效地创建和导出Excel文件。 首先,我们可以使用Microsoft ...
5. **导出Excel**:最后,生成填充后的Excel文件,可以保存到本地或作为HTTP响应发送给用户。 在`example-jxls-main`这个压缩包中,可能包含了以下内容: - 一个或多个示例Excel模板文件,展示了如何设置单元格样式...
使用Apache POI生成带文字水印的Excel文件,主要涉及以下几个步骤: 1. **初始化Workbook对象**:创建一个`XSSFWorkbook`实例,它是Apache POI针对Excel 2007及以上版本的Workbook实现。 2. **创建Sheet对象**:...
总之,Apache POI为Java开发者提供了一种强大且灵活的方式来操作Excel文件,无论是读取现有数据还是创建新的电子表格,都是一个非常实用的工具。通过正确集成和使用这个库,可以极大地提高工作效率,特别是在处理...
JAVA导出EXCEL表格的实例教学 在本文中,我们将整理了关于JAVA导出EXCEL表格的实例教学以及相关知识点。下面是相关的知识点总结...我们可以使用POI来实现JAVA导出EXCEL表格的功能,并且可以根据需要进行自定义和扩展。
**JSP Struts2 分页 导出Excel** ...通过以上步骤,我们可以构建一个功能完整的Web应用,实现从查询、分页到导出Excel的流程。在实际开发中,还需要考虑错误处理、性能优化、安全性等问题,确保系统的稳定性和可靠性。
在IT行业中,"导出Excel"是一个常见的任务,特别是在数据管理和分析领域。Excel作为一个功能强大的电子表格工具,被广泛用于组织、分析和呈现数据。KeyTool在这里可能指的是Java开发中的一个工具,它主要用于处理和...
在Java编程环境中,导出数据到PDF、Excel和Word格式是一项常见的需求,这通常涉及到文件处理和格式转换。以下是对这个主题的详细说明: 一、PDF(Portable Document Format)文件导出 PDF是一种通用的文件格式,...