poi根据excel模板文件导出数据
- 格式:docx
- 大小:21.76 KB
- 文档页数:4
easypoi 是一款 Java 的 POI Apache 提供的开源框架,用于实现 Excel、Word、PDF 等文档格式的导入导出。
下面是 easypoi 模板导出的指令:1. 定义模板:在 Excel 文档中定义模板,将需要填充的数据使用特定的标记占位,如 ${fieldName}。
2. 定义数据实体类:定义一个实体类,实体类中的属性需要和模板中的标记对应。
3. 填充数据:通过代码读取模板文件,使用实体类中的数据替换模板中的标记。
4. 导出文件:将填充后的数据写入到新的 Excel 文档中,即可实现模板导出。
示例代码:```java// 定义模板文件String templatePath = "template.xls";// 读取模板文件TemplateExportParams params = new TemplateExportParams(templatePath); // 定义数据实体类User user = new User();user.setName("张三");user.setAge(20);// 定义数据列表List<User> userList = new ArrayList<>();userList.add(user);// 填充数据Map<String, Object> map = new HashMap<>();map.put("userList", userList);// 导出文件Workbook workbook = ExcelExportUtil.exportExcel(params, map); FileOutputStream fos = new FileOutputStream("output.xls");workbook.write(fos);fos.close();```。
POI导出excel模板公式不能自动计算的解决方案在使用POI导出Excel模板时,有时会遇到公式不能自动计算的问题。
这可能是由于Excel默认的设置问题导致的,不过不用担心,我们可以通过以下几种解决方案来解决这个问题。
1.设置单元格的计算模式在导出Excel模板之前,我们可以使用POI来设置单元格的计算模式。
一般来说,Excel的计算模式有三种:自动计算、手动计算和自动计算除了外部链接。
我们可以通过设置Workbook的calculation属性来改变计算模式。
例如,我们可以使用以下代码将计算模式设置为自动计算:```javaWorkbook workbook = new HSSFWorkbook(;workbook.setForceFormulaRecalculation(true);```这会告诉Excel在打开文件时自动重新计算所有的公式。
2.强制单元格公式执行如果我们希望在导出Excel模板时,不改变当前计算模式,而是只对特定的单元格进行公式计算,我们可以使用以下方法来强制执行单元格中的公式:```javaCell cell = row.createCell(0);cell.setCellFormula("A1+B1");cell.setCellType(CellType.FORMULA);FormulaEvaluator evaluator =workbook.getCreationHelper(.createFormulaEvaluator(;evaluator.evaluateFormulaCell(cell);```这会对指定的单元格进行公式计算,并将结果存储在单元格中。
3.设置单元格的依赖关系在一些情况下,公式的计算可能依赖于其他单元格的值。
如果这些单元格的值在导出Excel模板时还未被填充,那么公式将无法正确计算。
为了解决这个问题,我们可以使用POI的公式依赖管理器(Dependency Tracker)来设置单元格的依赖关系。
根据指定的excel模板导出数据//模板//java代码package molde;import java.io.FileInputStream;import java.io.FileOutputStream;import ermodel.Cell;import ermodel.XSSFCell;import ermodel.XSSFRow;import ermodel.XSSFSheet;import ermodel.XSSFWorkbook;public class ExportExcelUtil {public static void main(String[] args) throws Exception {ExportExcelUtil export = new ExportExcelUtil();String srcFilePath = "C:\\Users\\Pei\\Desktop\\86.xlsx";String fileName = "test_" + System.currentTimeMillis() + ".xlsx";String desFilePath = "d:/" + fileName;export.exportExcel(srcFilePath,desFilePath);}//根据指定的excel模板导出数据public void exportExcel(String srcFilePath,String desFilePath) throws Exception {//创建Excel⽂件的输⼊流对象FileInputStream fis = new FileInputStream(srcFilePath);//根据模板创建excel⼯作簿XSSFWorkbook workBook = new XSSFWorkbook(fis);//创建Excel⽂件输出流对象FileOutputStream fos = new FileOutputStream(desFilePath);//获取创建的⼯作簿第⼀页XSSFSheet sheet = workBook.getSheetAt(0);//给指定的sheet命名workBook.setSheetName(0,"2016-11-30");//修改标题XSSFRow row = sheet.getRow(0);XSSFCell cell = row.getCell(0);//获取指定单元格值String s = cell.getStringCellValue();cell.setCellValue("修改后的标题为:"+s);//获取当前sheet最后⼀⾏数据对应的⾏索引int currentLastRowIndex = sheet.getLastRowNum();int newRowIndex = currentLastRowIndex + 1;XSSFRow newRow = sheet.createRow(newRowIndex);//开始创建并设置该⾏每⼀单元格的信息,该⾏单元格的索引从 0 开始int cellIndex = 0;//创建⼀个单元格,设置其内的数据格式为字符串,并填充内容,其余单元格类同XSSFCell newNameCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_STRING);newNameCell.setCellValue("乔⽟宝");XSSFCell newGenderCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_STRING);newGenderCell.setCellValue("男");XSSFCell newAgeCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_NUMERIC);newAgeCell.setCellValue(25);XSSFCell newAddressCell = newRow.createCell(cellIndex++, Cell.CELL_TYPE_NUMERIC);newAddressCell.setCellValue("重庆市渝北区");workBook.write(fos);//关闭流fis.close();fos.flush();fos.close();System.out.println("导出成功");}} //pom.xml⽂件<dependency><groupId>org.apache.poi</groupId> <artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version></dependency><dependency><groupId>net.sf.jxls</groupId><artifactId>jxls-core</artifactId><version>1.0.3</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId> <version>3.1.0</version></dependency><dependency><groupId>org.springframework</groupId> <artifactId>spring-web</artifactId><version>4.1.6.RELEASE</version></dependency>。
下面是本人使用java的poi实现使用模板到处excel,内容包含图片,使用两种不同的方式实现其到处excel。
但是使用jxl实现到处excel只能到处png格式。
package com.rxc.servlet;import java.awt.image.BufferedImage;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ermodel.HSSFCell;import ermodel.HSSFClientAnchor;import ermodel.HSSFPatriarch;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class OutExcelServlet 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 {String accident_id = request.getParameter("accident_id");String OnputimagePath = null;/***********************************************使用poi实现excel模版导出excel********************/try {POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:\\设备异常分析报告.xls"));HSSFWorkbook wb = new HSSFWorkbook(fs);HSSFSheet sheet = wb.getSheet("设备异常分析报告");HSSFRow row = sheet.getRow(2);HSSFCell cell = row.getCell((short) 2);if (cell == null){cell = row.createCell((short) 2);}cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellValue("12321212");ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();String InputimagePath = "d:\\1012051443548604211337adf6.jpg";BufferedImage bufferImg = ImageIO.read(new File(InputimagePath));ImageIO.write(bufferImg,"JPG",byteArrayOut);//设置图片大小,位置HSSFClientAnchor anchor = new HSSFClientAnchor(5,0,500,122,(short) 0, 5,(short)10,15);//创建HSSFPatriarch patri = sheet.createDrawingPatriarch();patri.createPicture(anchor ,wb.addPicture(byteArrayOut.toByteArra y(), HSSFWorkbook.PICTURE_TYPE_PNG));// 输出文件OnputimagePath = "d:\\test1.xls";FileOutputStream fileOut = new FileOutputStream(OnputimagePath);wb.write(fileOut);fileOut.close();} catch (Exception e) {e.printStackTrace();}// 检查文件是否存在File obj = new File(OnputimagePath);if (!obj.exists()) {r esponse.setContentType("text/html;charset=GBK");r esponse.getWriter().print("指定文件不存在!");return;}// 读取文件名:用于设置客户端保存时指定默认文件名int index = stIndexOf("\\"); // 前提:传入的path 字符串以“\”表示目录分隔符String fileName = OnputimagePath.substring(index + 1);// 写流文件到前端浏览器ServletOutputStream out = response.getOutputStream();response.setHeader("Content-disposition","attachment;filename=" + fileName);BufferedInputStream bis = null;BufferedOutputStream bos = null;try {bis = new BufferedInputStream(new FileInputStream(OnputimagePath));bos = new BufferedOutputStream(out);byte[] buff = new byte[2048];int bytesRead;while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead);}} catch (IOException e) {throw e;} finally {if (bis != null)bis.close();if (bos != null)bos.close();}}/*****************使用jxl实现excel模版导出excel 但导出图片仅支持png格式**************************************String realpath = "D:/test.xls";try {CopeDate data = new CopeDate();MapList mp = data.getdata(accident_id);//选择模板文件:Workbook wb = Workbook.getWorkbook(new File(realpath));//第二步:通过模板得到一个可写的Workbook:第一个参数是一个输出流对象,第二个参数代表了要读取的模板File targetFile = new File("D:/test1.xls");WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);//第三步:选择模板中名称为设备异常的Sheet:WritableSheet wws = wwb.getSheet("JustCell");//第四步:选择单元格,写入动态值,根据单元格的不同类型转换成相应类型的单元格:Label A1 = new Label(0, 1,mp.getRow(0).get("accident_name"));wws.addCell(A1);//插入图片File imgFile = new File("D:/test.png");WritableImage image = new WritableImage(2, 1, 8, 20, imgFile);wws.addImage(image);wwb.write();wwb.close();wb.close();} catch (BiffException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (WriteException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}********************************************************************* *******/}。
【POI】hutool万能⼯具的poi使⽤(Excel操作)POI技术(hutool⼯具的简单使⽤)POI: java技术,操作excel⽂档hutool-excel:常⽤poi功能,简化封装成⼯具类写出⽂档数据:(1)导出数据报表①获得能够向excel表格中输出信息对象[流]writer = ExcelUtil.getWriter("⽂件路径");注释:excel表格⽂件标准后缀:*.xls、*.xlsx② excel表格数据包含:表头:指明当前列数据的含义每⾏:多个单元格的数据;List<Object> | Map<字符串标题,Object>表格:多⾏数据。
List<Map<表头,Object数据>>③将数据写出到Excel⽂档:writer.write(list);④关闭流:writer.close();(2)向输出流中写⼊数据①创建⼀个写出的⼯具:ExcelWriter ew = ExcelUtil.getWriter();②将list多⾏数据集合写⼊:writer.write(list);③ flush,将数据写⼊到指定输出流中:writer.flush(outputStream);④关闭流:writer.close();(3)设置表格的sheet的名字writer.renameSheet("xxx")读⼊⽂档数据:①创建⼀个读⼊的⼯具:ExcelReader reader = ExcelUtil.getReader("⽂件路径");②读取⾥⾯的数据:List<Map<String,Object>> list = reader.readAll();③关闭流:reader.close();实例代码:导出:准备:导⼊POI的jar以及hutool的jar①⽅式⼀:(表格信息写到对应的⽂件路径)ExcelUtil.getWriter("⽂件路径"); //直接写到⽂件⾥②⽅式⼆:(表格信息写到特定的输出流⾥)List<Person> list = new ArrayList<Person>();persons.add(new Person("1001", "黄浩", 1, 18, "233456789", "郑州"));persons.add(new Person("1002", "杨宁", 1, 18, "233456789", "郑州"));persons.add(new Person("1003", "洪诗鹏", 1, 18, "233456789", "郑州"));// 重要将数据转化为hutool-excel,能够直接写出的数据结构:List<Map<String,Object>>// 创建⼀个存储多⾏数据的listList<Map<String, Object>> persons = new ArrayList<Map<String, Object>>();for (Person person : list) {// 每个person信息,代表⼀⾏数据:Map<String,person的属性>Map<String, Object> map = new LinkedHashMap<String, Object>();map.put("编号", person.getId());map.put("名字", person.getName());map.put("年龄", person.getAge());map.put("地址", person.getAddress());persons.add(map); // 将当前⾏的数据,加⼊persons}ExcelWriter writer = ExcelUtil.getWriter("D:/person.xlsx");// ①创建写出数据到⽂档中的⼯具writer.renameSheet("联系⼈信息表"); //设置sheet的名字writer.write(persons); // ②将数据写出到⽂档导出⼯具中writer.flush(输出流);//输出流:可以是⽂件输出流,也可以是控制器的响应流进⾏下载writer.close(); // ③关闭流导⼊:①创建⼀个读⼊的⼯具:ExcelReader reader = ExcelUtil.getReader("D:/person.xlsx");②读取⾥⾯的数据:List<Map<String, Object>> list = reader.readAll();③关闭流:reader.close();。
NPOI通过excel模板写⼊数据并导出private void ToExcel(string id){//模板⽂件string TempletFileName = Server.MapPath("template.xls");//导出⽂件string ReportFileName = Server.MapPath("out.xls");FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read); HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);HSSFSheet ws = hssfworkbook.GetSheet("Sheet1");//添加或修改WorkSheet⾥的数据System.Data.DataTable dt = new System.Data.DataTable();dt = DbHelperMySQLnew.Query("select * from t_jb_info where id='" + id + "'").Tables[0];#regionif (dt.Rows.Count > 0){if (!string.IsNullOrEmpty(dt.Rows[0]["blrq"].ToString())){DateTime blrq = DateTime.Parse(dt.Rows[0]["blrq"].ToString());ws.GetRow(7).GetCell(4).SetCellValue("56565");ws.GetRow(7).GetCell(6).SetCellValue(blrq.Month.ToString());ws.GetRow(7).GetCell(8).SetCellValue(blrq.Day.ToString());ws.GetRow(1).GetCell(2).SetCellValue(blrq.Year.ToString());ws.GetRow(1).GetCell(4).SetCellValue(blrq.Month.ToString());ws.GetRow(1).GetCell(6).SetCellValue(blrq.Day.ToString());//strnian = strblnian = blrq.Year.ToString();//stryue = strblyue = blrq.Month.ToString();//strri = strblri = blrq.Day.ToString();}ws.GetRow(1).GetCell(10).SetCellValue(id);// strbh = id;ws.GetRow(2).GetCell(1).SetCellValue(dt.Rows[0]["fyr"].ToString());ws.GetRow(2).GetCell(4).SetCellValue(dt.Rows[0]["dizhi"].ToString());ws.GetRow(2).GetCell(10).SetCellValue(dt.Rows[0]["lxdh"].ToString());ws.GetRow(3).GetCell(1).SetCellValue(dt.Rows[0]["bfyr"].ToString());ws.GetRow(5).GetCell(0).SetCellValue(dt.Rows[0]["wtnr"].ToString());if (!string.IsNullOrEmpty(dt.Rows[0]["chuliyijian"].ToString())){ws.GetRow(6).GetCell(1).SetCellValue(dt.Rows[0]["chuliyijian"].ToString());}if (!string.IsNullOrEmpty(dt.Rows[0]["ldps"].ToString())){ws.GetRow(8).GetCell(1).SetCellValue(dt.Rows[0]["ldps"].ToString());}if (!string.IsNullOrEmpty(dt.Rows[0]["psrq"].ToString())){DateTime blrq = DateTime.Parse(dt.Rows[0]["psrq"].ToString());ws.GetRow(10).GetCell(4).SetCellValue(blrq.Year.ToString());ws.GetRow(10).GetCell(6).SetCellValue(blrq.Month.ToString());ws.GetRow(10).GetCell(8).SetCellValue(blrq.Day.ToString());}if (!string.IsNullOrEmpty(dt.Rows[0]["jgrq"].ToString())){DateTime blrq = DateTime.Parse(dt.Rows[0]["jgrq"].ToString());ws.GetRow(12).GetCell(4).SetCellValue(blrq.Year.ToString());ws.GetRow(12).GetCell(6).SetCellValue(blrq.Month.ToString());ws.GetRow(12).GetCell(8).SetCellValue(blrq.Day.ToString());}if (!string.IsNullOrEmpty(dt.Rows[0]["jieguozt"].ToString())){ws.GetRow(11).GetCell(1).SetCellValue(dt.Rows[0]["jieguozt"].ToString());}}#endregionws.ForceFormulaRecalculation = true;using (FileStream filess = File.OpenWrite(ReportFileName)){hssfworkbook.Write(filess);}//filess.Close();System.IO.FileInfo filet = new System.IO.FileInfo(ReportFileName);Response.Clear();Response.Charset = "GB2312";Response.ContentEncoding = System.Text.Encoding.UTF8;// 添加头信息,为"⽂件下载/另存为"对话框指定默认⽂件名Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("55.xls")); // 添加头信息,指定⽂件⼤⼩,让浏览器能够显⽰下载进度Response.AddHeader("Content-Length", filet.Length.ToString());// 指定返回的是⼀个不能被客户端读取的流,必须被下载Response.ContentType = "application/ms-excel";// 把⽂件流发送到客户端Response.WriteFile(filet.FullName);// 停⽌页⾯的执⾏Response.End();}。
easypoi模板导出中sum用法【easypoi模板导出中sum用法】一、什么是easypoi模板导出?easypoi是一个基于Apache POI封装的Java Excel工具类库,它可以帮助开发人员简化Excel导入导出的操作,使得在项目中使用Excel变得更加简单。
easypoi提供了丰富的特性和API,可以直接通过模板导出Excel文件,使得Excel的样式、格式和数据可以在模板中预先定义,并且通过简单的操作完成导出,大大提高了开发效率。
二、sum函数的作用在Excel中,sum函数是一个常用的函数,用于计算一组数值的总和。
在easypoi 模板导出中,sum函数的作用与Excel中的sum函数类似,可以通过sum函数在导出的Excel中计算指定字段的数值总和。
三、sum函数的用法1. 在easypoi模板导出的Excel中,使用Excel的公式功能设置sum函数。
在模板Excel中,可以将sum函数作为公式输入到单元格中。
例如,假设我们需要计算某个字段的总和,我们可以在导出Excel的相应单元格中输入sum函数。
在输入公式时,需要注意单元格的引用,在sum函数中使用合适的单元格范围。
示例:在第一个单元格中输入:=SUM(B2:B10)其中,B2:B10是需要求和的数据范围。
2. 在Java代码中配置sum函数在easypoi的模板导出配置中,可以通过设置模板导出对象的注解@ExcelCollection来定义需要进行sum计算的字段,并在注解中设置sum函数的参数。
示例:@ExcelCollection(name = "学生列表", orderNum = "1", sumName = "总计")private List<Student> studentList;在上述示例中,@ExcelCollection注解中的sumName属性用来设置需要进行求和计算的字段名称,例如"总计"。
关于poi导出excel三种⽅式HSSFWorkbook,SXSSFWorkbook,csv的总结poi导出excel最常⽤的是第⼀种⽅式HSSFWorkbook,不过这种⽅式数据量⼤的话会产⽣内存溢出问题,SXSSFWorkbook是⼀种⼤数据量导出格式,csv是另⼀种excel导出的⼀种轻快的实现。
先介绍⼀下这三种格式的特点1 HSSFWorkbook excel⽂件底层是txt实现,我们经常见到的excel都是这种实现的。
2 SXSSFWorkbook excel⽂件底层是xml实现,同样的数据量,⼤约是第⼀种的1/6-1/4之间3 csv 这个⽐较新潮,数据量应该更⼩,可以百度。
⼀ HSSFWorkbook 实现Map<String, Object> dataMap = service.AssignMiddleExcel(page);ObjectExcelView erv = new ObjectExcelView("逾期客户表"); //执⾏excel操作mv = new ModelAndView(erv,dataMap);dataMap 是个map ,包含两个键值对⼀个是标题列Map<String,Object> dataMap = new HashMap<String,Object>();List<String> titles = new ArrayList<String>();titles.add("借款⼈姓名"); //1titles.add("⾝份证号"); //2titles.add("借款⼈⼿机号");dataMap.put("titles", titles);这是标题列vpd是个mapvpd.put("var1", userList.get(i).getString("realName")); //1vpd.put("var2", userList.get(i).getString("contIdCard")); //2vpd.put("var3", userList.get(i).getString("telephone")); //3List<PageData> varList = new ArrayList<PageData>();PageData就是个HashMapvarList.add(vpd);dataMap.put("varList", varList);这就是dataMap的由来public class ObjectExcelView extends AbstractExcelView{private String fileName;public ObjectExcelView(){}public ObjectExcelView(String fileName){this.fileName = fileName;}@Overrideprotected void buildExcelDocument(Map<String, Object> model,HSSFWorkbook workbook, HttpServletRequest request,HttpServletResponse response) throws Exception {// TODO Auto-generated method stub//String fileName = "逾期客户表-待催收";HSSFSheet sheet;HSSFCell cell;response.setContentType("application/x-download");//下⾯三⾏是关键代码,处理乱码问题response.setCharacterEncoding("utf-8");response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("gbk"), "iso8859-1")+".xls");sheet = workbook.createSheet("sheet1");List<String> titles = (List<String>) model.get("titles");int len = titles.size();HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);HSSFFont headerFont = workbook.createFont(); //标题字体headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);headerFont.setFontHeightInPoints((short)11);headerStyle.setFont(headerFont);short width = 20,height=25*20;sheet.setDefaultColumnWidth(width);for(int i=0; i<len; i++){ //设置标题String title = titles.get(i);cell = getCell(sheet, 0, i);cell.setCellStyle(headerStyle);setText(cell,title);}sheet.getRow(0).setHeight(height);HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);List<PageData> varList = (List<PageData>) model.get("varList");int varCount = varList.size();for(int i=0; i<varCount; i++){PageData vpd = varList.get(i);for(int j=0;j<len;j++){String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";cell = getCell(sheet, i+1, j);cell.setCellStyle(contentStyle);setText(cell,varstr);}}}}⼆ SXSSFWorkbook@RequestMapping("/excel111")public Object exportExcel(Page page,HttpServletRequest request,HttpServletResponse response){ PageData pd = new PageData();pd = this.getPageData();try{//检索条件===========PageData pageData = service.setPdWithTrim(this.getPageData());page.setPd(pageData);//检索条件===========Map<String, Object> dataMap = service.AssignMiddleExcel(page);OutputStream outputStream = response.getOutputStream();String sheetName = "逾期客户表";List<String> list = (List<String>)dataMap.get("titles");String[] headers = new String[list.size()];for(int i = 0;i<list.size();i++){headers[i]=list.get(i);}List<Object[]> dataList = new ArrayList<>();List<PageData> varList = new ArrayList<PageData>();varList = (List<PageData>)dataMap.get("varList");varList.forEach(e ->{List<Object> ObjectList = new ArrayList<>();for(int i=0;i<headers.length;i++){ObjectList.add(e.get("var"+(i+1))==null?null:e.getString("var"+(i+1)));}/* for (Object v : e.values()) {ObjectList.add(v);}*/Object[] objarr = new Object[ObjectList.size()];for(int i = 0;i<ObjectList.size();i++){objarr[i] = ObjectList.get(i);}dataList.add(objarr);});ExportUtil exportUtil = new ExportUtil(sheetName,headers,dataList);//SXSSFWorkbook ⼤批量数据导出SXSSFWorkbook workBook = exportUtil.export();// 如果⽂件名有中⽂,必须URL编码String fileName1 = URLEncoder.encode(sheetName, "UTF-8");// response.reset();// response.setContentType("application/force-download");response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment; filename=" + fileName1+".xls");workBook.write(outputStream);workBook.close();outputStream.flush();outputStream.close();//ObjectExcelView erv = new ObjectExcelView("逾期客户表"); //执⾏excel操作//mv = new ModelAndView(erv,dataMap);} catch(Exception e){logger.error(e.toString(), e);}return new Object();}package com.fh.controller.assign_out;import java.util.ArrayList;import java.util.List;import ermodel.HSSFCell;import ermodel.HSSFCellStyle;import ermodel.HSSFFont;import ermodel.HSSFRichTextString;import org.apache.poi.hssf.util.HSSFColor;import ermodel.Cell;import ermodel.CellStyle;import ermodel.Font;import ermodel.Row;import ermodel.Sheet;import org.apache.poi.ss.util.CellRangeAddress;import org.apache.poi.xssf.streaming.SXSSFCell;import org.apache.poi.xssf.streaming.SXSSFRow;import org.apache.poi.xssf.streaming.SXSSFWorkbook;import ermodel.XSSFCellStyle;import ermodel.XSSFFont;import org.springframework.util.StringUtils;/*** Created by dell、 on 2017/10/12.*/public class ExportUtil {private SXSSFWorkbook wb = null;//⼤数据导出格式private Sheet sheet = null;private String sheetName;private String[] headers;//表头字段private List<Object[]> dataList = new ArrayList<Object[]>();//表内容数据//构造public ExportUtil(SXSSFWorkbook wb, Sheet sheet) {this.wb = wb;this.sheet = sheet;}//构造public ExportUtil(String sheetName, String[] headers, List<Object[]> dataList) { this.dataList = dataList;this.headers = headers;this.sheetName = sheetName;}//不知道做什么public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs) {int toprowNum = region.getFirstRow();for (int i = toprowNum; i <= region.getLastRow(); i++) {SXSSFRow row = (SXSSFRow) sheet.getRow(i);for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {SXSSFCell cell = (SXSSFCell) row.getCell(j);cell.setCellStyle(cs);}}}// 设置表头的单元格样式public CellStyle getHeadStyle() {// 创建单元格样式CellStyle cellStyle = wb.createCellStyle();// 设置单元格的背景颜⾊为淡蓝⾊cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);// 设置填充字体的样式cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);// 设置单元格居中对齐cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 设置单元格垂直居中对齐cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 创建单元格内容显⽰不下时⾃动换⾏cellStyle.setWrapText(false);// 设置单元格字体样式XSSFFont font = (XSSFFont) wb.createFont();// font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 这是字体加粗font.setFontName("宋体");// 设置字体的样式font.setFontHeight(14);// 设置字体的⼤⼩cellStyle.setFont(font);// 将字体填充到表格中去// 设置单元格边框为细线条(上下左右)cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);return cellStyle;}// 设置表体的单元格样式public CellStyle getBodyStyle() {// 创建单元格样式CellStyle cellStyle = wb.createCellStyle();// 设置单元格居中对齐cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 设置单元格居中对齐cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 创建单元格内容不显⽰⾃动换⾏cellStyle.setWrapText(false);// 设置单元格字体样式XSSFFont font = (XSSFFont) wb.createFont();font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 这是字体加粗font.setFontName("宋体");// 设置字体font.setFontHeight(12);// 设置字体的⼤⼩cellStyle.setFont(font);// 将字体添加到表格中去// 设置单元格边框为细线条cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);return cellStyle;}//似乎没⽤到public Cell setHeadStyle(String[] titles) {Cell cell = null;CellStyle headStyle = getHeadStyle();Row headRow = sheet.createRow(0);// 构建表头for (int i = 0; i < titles.length; i++) {cell = headRow.createCell(i);cell.setCellStyle(headStyle);cell.setCellValue(titles[i]);}return cell;}/** 导出数据*/public SXSSFWorkbook export() throws Exception {// String nsheetName = new String(sheetName.getBytes("UTF-8"));/** response.setCharacterEncoding("utf-8");* response.setContentType("application/x-msdownload");* response.setHeader("Content-disposition", "attachment; filename=" +* sheetName + ".xlsx");// 组装附件名称和格式*/Integer rowaccess = 1000;// 内存中缓存记录⾏数,以免内存溢出SXSSFWorkbook workbook = new SXSSFWorkbook(rowaccess);try {Sheet sheet = workbook.createSheet(sheetName);// 产⽣表格标题⾏Row titleRow = sheet.createRow(0);Cell cellTiltle = titleRow.createCell(0);CellStyle columnTopStyle = this.getColumnTopStyle(workbook);// 获取列头样式对象 sheet.setDefaultColumnWidth(100);sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, (headers.length - 1)));cellTiltle.setCellStyle(columnTopStyle);cellTiltle.setCellValue(sheetName);Cell cell = null;CellStyle headStyle = this.getHeadStyle(workbook);// 定义所需列数int columnNum = headers.length;Row headRow = sheet.createRow(2); // 在索引2的位置创建⾏(最顶端的⾏开始的第⼆⾏)//表头for (int n = 0; n < columnNum; n++) {Cell cellRowName = headRow.createCell(n); // 创建列头对应个数的单元格cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); // 设置列头单元格的数据类型 HSSFRichTextString text = new HSSFRichTextString(headers[n]);cellRowName.setCellValue(headers[n]); // 设置列头单元格的值cellRowName.setCellStyle(headStyle); // 设置列头单元格样式sheet.setColumnWidth(n,256*20);}CellStyle bodyStyle = this.getBodyStyle(workbook);// 表体数据for (int i = 0; i < dataList.size(); i++) {Object[] obj = dataList.get(i);Row row = sheet.createRow(i + 3);// 创建所需的⾏数for (int j = 0; j < obj.length; j++) {cell = row.createCell(j);String str = String.valueOf(StringUtils.isEmpty(obj[j]) ? "" : obj[j]);cell.setCellValue(str); // 单元格的值cell.setCellStyle(bodyStyle); // 单元格的样式}}} catch (Exception e) {e.printStackTrace();}return workbook;}// 设置表头的单元格样式public CellStyle getHeadStyle(SXSSFWorkbook workbook) {// 创建单元格样式CellStyle cellStyle = workbook.createCellStyle();// 设置单元格的背景颜⾊为淡蓝⾊cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);// 设置填充字体的样式cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);// 设置单元格居中对齐cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 设置单元格垂直居中对齐cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// cellStyle.setShrinkToFit(true);// 创建单元格内容显⽰不下时⾃动换⾏//cellStyle.setWrapText(true);// 设置单元格字体样式XSSFFont font = (XSSFFont) workbook.createFont();// font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 这是字体加粗font.setFontName("宋体");// 设置字体的样式font.setFontHeight(12);// 设置字体的⼤⼩cellStyle.setFont(font);// 将字体填充到表格中去// 设置单元格边框为细线条(上下左右)cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);return cellStyle;}// 设置表体的单元格样式public CellStyle getBodyStyle(SXSSFWorkbook workbook) {// 创建单元格样式CellStyle cellStyle = workbook.createCellStyle();// 设置单元格居中对齐cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 设置单元格居中对齐cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 创建单元格内容不显⽰⾃动换⾏//cellStyle.setWrapText(true);// 设置单元格字体样式XSSFFont font = (XSSFFont) workbook.createFont();// font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 这是字体加粗 font.setFontName("宋体");// 设置字体font.setFontHeight(10);// 设置字体的⼤⼩cellStyle.setFont(font);// 将字体添加到表格中去// 设置单元格边框为细线条cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);return cellStyle;}public Cell setHeadStyle(String[] titles, SXSSFWorkbook workbook) {Cell cell = null;CellStyle headStyle = getHeadStyle(workbook);Row headRow = sheet.createRow(0);// 构建表头for (int i = 0; i < titles.length; i++) {cell = headRow.createCell(i);cell.setCellStyle(headStyle);cell.setCellValue(titles[i]);}return cell;}/** 列头单元格样式*/public CellStyle getColumnTopStyle(SXSSFWorkbook workbook) {// 设置字体Font font = workbook.createFont();// 设置字体⼤⼩font.setFontHeightInPoints((short) 18);// 字体加粗font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置字体名字font.setFontName("Courier New");// 设置样式;CellStyle style = workbook.createCellStyle();// 设置底边框;style.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 设置底边框颜⾊;style.setBottomBorderColor(HSSFColor.BLACK.index);// 设置左边框;style.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 设置左边框颜⾊;style.setLeftBorderColor(HSSFColor.BLACK.index);// 设置右边框;style.setBorderRight(HSSFCellStyle.BORDER_THIN);// 设置右边框颜⾊;style.setRightBorderColor(HSSFColor.BLACK.index);// 设置顶边框;style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 设置顶边框颜⾊;style.setTopBorderColor(HSSFColor.BLACK.index);// 在样式⽤应⽤设置的字体;style.setFont(font);// 设置⾃动换⾏;style.setWrapText(false);// 设置⽔平对齐的样式为居中对齐;style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 设置垂直对齐的样式为居中对齐;style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);return style;}}三 csv/** 导出委外催收中EXCEL ⼤数据量csv导出* @return*/@RequestMapping("/excel")public Object exportExcel111(Page page, HttpServletResponse response ) {PageData pd = new PageData();pd = this.getPageData();try {//检索条件===========PageData pageData = service.setPdWithTrim(this.getPageData());page.setPd(pageData);//检索条件===========Map<String, Object> dataMap = service.AssignMiddleExcel(page);String sheetName = "逾期客户表";List<Object> headlist = (List<Object>)dataMap.get("titles");List<List<Object>> dataList = new ArrayList<>();List<PageData> varList = new ArrayList<PageData>();varList = (List<PageData>)dataMap.get("varList");varList.forEach(e ->{List<Object> ObjectList = new ArrayList<>();for(int i=0;i<headlist.size();i++){ObjectList.add(e.get("var"+(i+1))==null?null:e.getString("var"+(i+1)));}dataList.add(ObjectList);});File csvFile =CSVUtils.createCSVFile(headlist,dataList,sheetName);BufferedInputStream bis = null;BufferedOutputStream bos = null;response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(csvFile.getName(), "UTF-8")); response.setHeader("Content-Length", String.valueOf(csvFile.length()));bis = new BufferedInputStream(new FileInputStream(csvFile));bos = new BufferedOutputStream(response.getOutputStream());byte[] buff = new byte[2048];while (true) {int bytesRead;if (-1 == (bytesRead = bis.read(buff, 0, buff.length))) break;bos.write(buff, 0, bytesRead);}bis.close();bos.close();csvFile.delete();}catch (Exception e){e.printStackTrace();}return new Object();}package com.fh.controller.assign_out;import javax.servlet.http.HttpServletRequest;import java.io.*;import java.util.*;/*** Created by dell、 on 2017/10/12.*/public class CSVUtils {/*** CSV⽂件⽣成⽅法* @param head* @param dataList* @param filename* @return*/public static File createCSVFile(List<Object> head, List<List<Object>> dataList,String filename) {File csvFile = null;BufferedWriter csvWtriter = null;try {csvFile = new File( "temp123/"+ File.separator + filename + ".csv");File parent = csvFile.getParentFile();if (parent != null && !parent.exists()) {parent.mkdirs();}csvFile.createNewFile();// GB2312使正确读取分隔符","csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "GB2312"), 1024);// 写⼊⽂件头部writeRow(head, csvWtriter);// 写⼊⽂件内容for (List<Object> row : dataList) {writeRow(row, csvWtriter);}csvWtriter.flush();} catch (Exception e) {e.printStackTrace();} finally {try {csvWtriter.close();} catch (IOException e) {e.printStackTrace();}}return csvFile;}/*** 写⼀⾏数据⽅法* @param row* @param csvWriter* @throws IOException*/private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException { // 写⼊⽂件头部for (Object data : row) {StringBuffer sb = new StringBuffer();String rowStr = sb.append("\"").append(data).append("\",").toString();csvWriter.write(rowStr);}csvWriter.newLine();}public static File createCSVFile(HttpServletRequest request){List< Map<String,Object>> list = new ArrayList<>();for(int i =0;i<10;i++){Map<String,Object> mao = new HashMap<>();mao.put("cutomerName","zhangsan"+i);mao.put("cutomerNam1","zhangsan"+i);mao.put("cutomerNam2","zhangsan"+i);mao.put("cutomerNam3","zhangsan"+i);mao.put("cutomerNam4","zhangsan"+i);mao.put("cutomerNam5","zhangsan"+i);mao.put("cutomerNam6","zhangsan"+i);mao.put("cutomerNam7","zhangsan"+i);mao.put("cutomerNam8","zhangsan"+i);mao.put("cutomerNam9", "2017-10-17 22:33:33 12.00");mao.put("cutomerNam10",555555556);/* mao.put("cutomerNam11","zhangsan"+i);mao.put("cutomerNam12","zhangsan"+i);mao.put("cutomerNam13","zhangsan"+i);mao.put("cutomerNam14","zhangsan"+i);mao.put("cutomerNam15","zhangsan"+i);mao.put("cutomerNam16","zhangsan"+i);mao.put("cutomerNam17","zhangsan"+i);mao.put("cutomerNam18","zhangsan"+i);mao.put("cutomerNam19","zhangsan"+i);mao.put("cutomerNam20","zhangsan"+i);mao.put("cutomerNam21","zhangsan"+i);mao.put("cutomerNam22","zhangsan"+i);mao.put("cutomerNam23","zhangsan"+i);mao.put("cutomerNam24","zhangsan"+i);mao.put("cutomerNam25","zhangsan"+i);mao.put("cutomerNam26","zhangsan"+i);mao.put("cutomerNam27","zhangsan"+i);mao.put("cutomerNam28","zhangsan"+i);mao.put("cutomerNam29","zhangsan"+i);mao.put("cutomerNam30","zhangsan"+i);mao.put("cutomerNam31","zhangsan"+i);mao.put("cutomerNam32","zhangsan"+i);mao.put("cutomerNam33","zhangsan"+i);mao.put("cutomerNam34","zhangsan"+i);mao.put("cutomerNam35","zhangsan"+i);mao.put("cutomerNam36","zhangsan"+i);mao.put("cutomerNam37","zhangsan"+i);mao.put("cutomerNam38","zhangsan"+i);mao.put("cutomerNam39","zhangsan"+i);mao.put("cutomerNam40","zhangsan"+i);mao.put("cutomerNam41","zhangsan"+i);mao.put("cutomerNam42","zhangsan"+i);mao.put("cutomerNam43","zhangsan"+i);mao.put("cutomerNam44","zhangsan"+i);mao.put("cutomerNam45","zhangsan"+i);*/list.add(mao);}// 设置表格头Object[] head = {"客户姓名", "证件类型", "证件号码", "银⾏账号", "理财账号", "客户类型", "风险等级", "归属状况", "归属机构", "客户经理", "营销⽐例(%)" }; List<Object> headList = Arrays.asList(head);// 设置数据List<List<Object>> dataList = new ArrayList<List<Object>>();List<Object> rowList = null;for (int i = 0; i < list.size(); i++) {rowList = new ArrayList<Object>();Map<String,Object> maovo = list.get(i);rowList.add(maovo.get("cutomerName"));rowList.add(maovo.get("cutomerNam1"));rowList.add(maovo.get("cutomerNam2"));rowList.add(maovo.get("cutomerNam3"));rowList.add(maovo.get("cutomerNam4"));rowList.add(maovo.get("cutomerNam5"));rowList.add(maovo.get("cutomerNam6"));rowList.add(maovo.get("cutomerNam7"));rowList.add(maovo.get("cutomerNam8"));rowList.add(maovo.get("cutomerNam9"));rowList.add(maovo.get("cutomerNam10"));dataList.add(rowList);}// 导出⽂件路径// String downloadFilePath = request.getContextPath();// 导出⽂件名称String fileName = "客户列表_";// 导出CSV⽂件File csvFile = CSVUtils.createCSVFile(headList, dataList, fileName);return csvFile;}}。
竭诚为您提供优质文档/双击可除easypoi,模板导出篇一:poiexcel导出样式设计hssFcell设置样式1、遍历workbook//load源文件poiFsFilesystemfs=newpoiFsFilesystem(newFileinputst ream(filepath));hssFworkbookwb=newhssFworkbook(fs);for(inti=0;i hssFsheetsheet=wb.getsheetat(i);for(intj=sheet.getFirstRownum();jeasypoi,模板导出){hssFRowrow=sheet.getRow(j);if(row!=null){//。
操作}}}}//目标文件Fileoutputstreamfos=newFileoutputstream(objectpath);//写文件wb.write(fos);fos.close();2、得到列和单元格hssFRowrow=sheet.getRow(i);hssFcellcell=row.getcell((short)j);3、设置sheet名称和单元格内容为中文wb.setsheetname(n,"中文",hssFcell.encoding_utF_16);cell.setencoding((short)1);cell.setcellValue("中文");4、单元格内容未公式或数值,可以这样读写cell.setcelltype(hssFcell.cell_type_numeRic);cell.getnumericcellValue();5、设置列宽、行高sheet.setcolumnwidth((short)column,(short)width);row.setheight((short)height);6、添加区域,合并单元格Regionregion=Region((short)rowFrom,(short)columnFrom,(short)rowt o,(short)columnto);sheet.addmergedRegion(region);//得到所有区域sheet.getnummergedRegions();7、常用方法根据单元格不同属性返回字符串数值publicstringgetcellstringValue(hssFcellcell){ stringcellValue="";switch(cell.getcelltype()){casehssFcell.cell_type_stRing:cellValue=cell.getstringcellValue();if(cellValue.trim().equals("")||cellValue.trim().le ngth() cellValue="";break;casehssFcell.cell_type_numeRic:cellValue=string.valueof(cell.getnumericcellValue() );break;casehssFcell.cell_type_FoRmula:cell.setcelltype(hssFcell.cell_type_numeRic);cellValue=string.valueof(cell.getnumericcellValue() );break;casehssFcell.cell_type_blank:cellValue="";break;casehssFcell.cell_type_boolean:break;casehssFcell.cell_type_eRRoR:break;default:break;}returncellValue;}8、常用单元格边框格式虚线hssFcellstyle.boRdeR_dotted实线hssFcellstyle.boRdeR_thinpublicstatichssFcellstylegetcellstyle(shorttype){ne whssFworkbookwb=newhssFworkbook();hssFcellstylestyle=wb.createcellstyle();style.setborderbottom(type);//下边框style.setborderleft(type);//左边框style.setborderRight(type);//右边框style.setbordertop(type);//上边框returnstyle;}设置字体和内容位置hssFFontf=wb.createFont();f.setFontheightinpoints((short)11);//字号f.setboldweight(hssFFont.boldweight_noRmal);//加粗style.setFont(f);style.setalignment(hssFcellstyle.align_centeR);//左右居中style.setVerticalalignment(hssFcellstyle.VeRtical_centeR);//上下居中style.setRotation(shortrotation);//单元格内容的旋转的角度hssFdataFormatdf=wb.createdataFormat();style1.setdataFormat(df.getFormat("0.00%"));//设置单元格数据格式cell.setcellFormula(string);//给单元格设公式style.setRotation(shortrotation);//单元格内容的旋转的角度cell.setcellstyle(style);10、插入图片//先把读进来的图片放到一个bytearrayoutputstream 中,以便产生bytearraybytearrayoutputstreambytearrayout=newbytea rrayoutputstream();bufferedimagebufferimg=imageio.read(newFile("ok.jpg "));imageio.write(bufferimg,"jpg",bytearrayout);//读进一个excel模版Fileinputstreamfos=newFileinputstream(filepathname+"/stencil.xlt");fs=newpoiFsFilesystem(fos);//创建一个工作薄hssFworkbookwb=newhssFworkbook(fs);hssFsheetsheet=wb.getsheetat(0);hssFpatriarchpatriarch=sheet.createdrawingpatriarch ();hssFclientanchoranchor=newhssFclientanchor(0,0,1023 ,255,(short)0,0,(short)10,10);patriarch.createpictu re(anchor,wb.addpicture(bytearrayout.tobytearray(), hssFworkbook.pictuRe_type_jpeg));java操作excel(hssF样式一)importjava.io.ioexception;importjava.io.printwriter;importjava.util.arraylist;importjava.util.hashmap;importjava.util.iterator;importjava.util.list;importjavax.servlet.servletexception;importjavax.servlet.servletoutputstream;importjavax.servlet.http.httpservlet;importjavax.servlet.http.httpservletRequest;importjavax.servlet.http.httpservletResponse;ermodel.hssFcell;ermodel.hssFcellstyle;importorg.apache.poi.hssf.util.hssFcolor;importorg.apache.poi.hssf.util.Region;ermodel.hssFFont;ermodel.hssFRow;ermodel.hssFsheet;ermodel.hssFworkbook;hssFcellstyle类代表一种单元格样式。
easypoi模板导出语法Easypoi是一个基于Apache POI的Java Excel工具库,可以帮助我们方便地进行Excel文件的导入和导出操作。
下面是Easypoi模板导出的详细语法:1. 导出Excel文件的基本步骤:- 创建一个Excel对象:Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), 实体类.class, 数据列表);- 创建一个输出流:OutputStream outputStream = new FileOutputStream("文件路径");- 将Excel对象写入输出流:workbook.write(outputStream);- 关闭输出流:outputStream.close();2. 导出Excel文件的模板语法:- 创建一个导出参数对象:ExportParams exportParams = new ExportParams("表格标题", "表格标题");- 设置导出参数对象的相关属性:exportParams.setStyle(ExcelExportStylerBorderImpl.class);- 创建一个导出工具对象:ExcelExportUtil.exportExcel(exportParams, 实体类.class, 数据列表);3. 模板语法的高级用法:- 设置表头样式:exportParams.setTitleStyle(ExcelExportStylerColorImpl.class );- 设置数据行样式:exportParams.setDataStyle(ExcelExportStylerColorImpl.class);- 设置表格自适应宽度:exportParams.setCreateHeadRows(true);4. 导出Excel文件的模板语法示例:- 创建一个导出参数对象:ExportParams exportParams = new ExportParams("学生信息表", "学生信息");- 设置导出参数对象的相关属性:exportParams.setStyle(ExcelExportStylerBorderImpl.class);- 创建一个导出工具对象:ExcelExportUtil.exportExcel(exportParams, Student.class, studentList);以上就是Easypoi模板导出的详细语法说明,希望对你有所帮助!。
1.import java.io.File;2.import java.io.FileInputStream;3.import java.io.FileNotFoundException;4.import java.io.FileOutputStream;5.import java.io.IOException;6.import java.util.Calendar;7.import java.util.Date;8.9.import ermodel.HSSFCell;10.import ermodel.HSSFSheet;11.import ermodel.HSSFWorkbook;12.import org.apache.poi.poifs.filesystem.POIFSFileSystem;13.import ermodel.RichTextString;14./**15. * 共分为六部完成根据模板导出excel操作:<br/>16. * 第一步、设置excel模板路径(setSrcPath)<br/>17. * 第二步、设置要生成excel文件路径(setDesPath)<br/>18. * 第三步、设置模板中哪个Sheet列(setSheetName)<br/>19. * 第四步、获取所读取excel模板的对象(getSheet)<br/>20. * 第五步、设置数据(分为6种类型数据:setCellStrValue、setCellDateValue、setCellDoubleValue、setCellBoolValue、setCellCalendarValue、setCellRichTextStrValue)<br/>21. * 第六步、完成导出(exportToNewFile)<br/>22. *23. * @author Administrator24. *25. */26.public class ExcelUtil {27.private String srcXlsPath = "";// // excel模板路径28.private String desXlsPath = "";29.private String sheetName = "";30. POIFSFileSystem fs = null;31. HSSFWorkbook wb = null;32. HSSFSheet sheet = null;33.34./**35. * 第一步、设置excel模板路径36. * @param srcXlsPath37. */38.public void setSrcPath(String srcXlsPath) {39.this.srcXlsPath = srcXlsPath;40. }41.42./**43. * 第二步、设置要生成excel文件路径44. * @param desXlsPath45. */46.public void setDesPath(String desXlsPath) {47.this.desXlsPath = desXlsPath;48. }49.50./**51. * 第三步、设置模板中哪个Sheet列52. * @param sheetName53. */54.public void setSheetName(String sheetName) {55.this.sheetName = sheetName;56. }57.58./**59. * 第四步、获取所读取excel模板的对象60. */61.public void getSheet() {62.try {63. File fi = new File(srcXlsPath);64.if(!fi.exists()){65. System.out.println("模板文件:"+srcXlsPath+"不存在!");66.return;67. }68. fs = new POIFSFileSystem(new FileInputStream(fi));69. wb = new HSSFWorkbook(fs);70. sheet = wb.getSheet(sheetName);71. } catch (FileNotFoundException e) {72. e.printStackTrace();73. } catch (IOException e) {74. e.printStackTrace();75. }76. }77.78./**79. * 第五步、设置字符串类型的数据80. * @param rowIndex--行值81. * @param cellnum--列值82. * @param value--字符串类型的数据83. */84.public void setCellStrValue(int rowIndex, int cellnum, String value) {85. HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);86. cell.setCellValue(value);87. }88.89./**90. * 第五步、设置日期/时间类型的数据91. * @param rowIndex--行值92. * @param cellnum--列值93. * @param value--日期/时间类型的数据94. */95.public void setCellDateValue(int rowIndex, int cellnum, Date value) {96. HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);97. cell.setCellValue(value);98. }99.100./**101. * 第五步、设置浮点类型的数据102. * @param rowIndex--行值103. * @param cellnum--列值104. * @param value--浮点类型的数据105. */106.public void setCellDoubleValue(int rowIndex, int cellnum, double value) {107. HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);108. cell.setCellValue(value);109. }110.111./**112. * 第五步、设置Bool类型的数据113. * @param rowIndex--行值114. * @param cellnum--列值115. * @param value--Bool类型的数据116. */117.public void setCellBoolValue(int rowIndex, int cellnum, boolean value) {118. HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);119. cell.setCellValue(value);120. }121.122./**123. * 第五步、设置日历类型的数据124. * @param rowIndex--行值125. * @param cellnum--列值126. * @param value--日历类型的数据127. */128.public void setCellCalendarValue(int rowIndex, int cellnum, Calendar va lue) {129. HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);130. cell.setCellValue(value);131. }132.133./**134. * 第五步、设置富文本字符串类型的数据。
可以为同一个单元格内的字符串的不同部分设置不同的字体、颜色、下划线135. * @param rowIndex--行值136. * @param cellnum--列值137. * @param value--富文本字符串类型的数据138. */139.public void setCellRichTextStrValue(int rowIndex, int cellnum,140. RichTextString value) {141. HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);142. cell.setCellValue(value);143. }144.145./**146. * 第六步、完成导出147. */148.public void exportToNewFile() {149. FileOutputStream out;150.try {151. out = new FileOutputStream(desXlsPath);152. wb.write(out);153. out.close();154. } catch (FileNotFoundException e) {155. e.printStackTrace();156. } catch (IOException e) {157. e.printStackTrace();158. }159. }160.}。