java中将数据和图片导出到Excel文件中

合集下载

Java导入导出excel,easypoi的简单使用

Java导入导出excel,easypoi的简单使用

Java导⼊导出excel,easypoi的简单使⽤基于spring boot框架,先上pom配置<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.0.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>4.0.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>4.0.0</version></dependency>实体类package com.vo;import cn.afterturn.easypoi.excel.annotation.Excel;import com.baomidou.mybatisplus.annotation.TableName;import mon.data.entity.CurdEntity;@TableName("wx_user")public class User extends CurdEntity {@Excel(name = "姓名")String name;@Excel(name = "⽤户")String user;@Excel(name = "年龄")int groupValue;public int getGroupValue() {return groupValue;}public void setGroupValue(int groupValue) {this.groupValue = groupValue;}public String getName() {return name;}public void setName(String name) { = name;}public String getUser() {return user;}public void setUser(String user) {er = user;}}通⽤⽅法类package mon.util;import cn.afterturn.easypoi.excel.ExcelExportUtil;import cn.afterturn.easypoi.excel.ExcelImportUtil;import cn.afterturn.easypoi.excel.entity.ExportParams;import cn.afterturn.easypoi.excel.entity.ImportParams;import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;import ng3.StringUtils;import ermodel.Workbook;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;import java.io.File;import java.io.IOException;import .URLEncoder;import java.util.List;import java.util.Map;import java.util.NoSuchElementException;/*** @Description: 表格⼯具类*/public class PoiUtils {public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) { ExportParams exportParams = new ExportParams(title, sheetName);exportParams.setCreateHeadRows(isCreateHeader);defaultExport(list, pojoClass, fileName, response, exportParams);}public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) {defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));}public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {defaultExport(list, fileName, response);}private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) {Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);if (workbook != null) ;downLoadExcel(fileName, response, workbook);}private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {try {response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");response.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));workbook.write(response.getOutputStream());} catch (IOException e) {throw new RuntimeException(e.getMessage());}}private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);if (workbook != null) ;downLoadExcel(fileName, response, workbook);}/*** 导⼊* @param filePath* @param titleRows* @param headerRows* @param pojoClass* @param <T>* @return*/public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) {if (StringUtils.isBlank(filePath)) {return null;}ImportParams params = new ImportParams();params.setTitleRows(titleRows);params.setHeadRows(headerRows);List<T> list = null;try {list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);} catch (NoSuchElementException e) {throw new RuntimeException("模板不能为空");} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e.getMessage());}return list;}/*** 导⼊表格* @param file* @param pojoClass* @param <T>* @return*/public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass) {if (file == null) {return null;}ImportParams params = new ImportParams();try {List<T> list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);return list;} catch (NoSuchElementException e) {throw new RuntimeException("excel⽂件不能为空");} catch (Exception e) {throw new RuntimeException(e.getMessage());}}}接⼝调⽤相关⽅法,这⾥演⽰⼀下导⼊功能@PostMapping("excelList")//批量保存,⼀条保存失败,数据全部回滚,测试事务是否⽣效public MsgDataBody excelList(MultipartFile file){MsgDataBody<List<User>> msgBody = new MsgDataBody();msgBody.setCode(Constant.Error.getCode());msgBody.setMsg("导⼊失败");try {List<User> userList = PoiUtils.importExcel(file,User.class);/** 相关导⼊操作* */msgBody.setData(userList);msgBody.setCode(Constant.Success.getCode());msgBody.setMsg("导⼊失败");}catch (Exception e){msgBody.setMsg("导⼊失败["+e.getMessage()+"]");}return msgBody;}更多的easypoi教程可以看官⽹教程:。

javapoi导出图片到excel示例代码

javapoi导出图片到excel示例代码

javapoi导出图⽚到excel⽰例代码本⽂实例为⼤家分享了java使⽤poi导出图⽚到Excel的具体代码,供⼤家参考,具体内容如下代码实现Controller/*** 导出志愿者/⼈才数据* @param talent_type* @return*/@RequestMapping("/exportData")public void exportData(Integer talent_type, HttpServletResponse response) {String fileId = UUID.randomUUID().toString().replace("-", "");Map<String, Object> param = new HashMap<>() ;param.put("talent_type", talent_type) ;try {List<Map<String, Object>> volunteerMapList = volunteerService.getExportData(param) ;String rootPath = SysConfigManager.getInstance().getText("/config/sys/rootPath");String filePath = rootPath + "/" + fileId + ".xlsx" ;volunteerService.exportData(volunteerMapList, filePath) ;// 下载FileInputStream inputStream = null;try{//设置发送到客户端的响应内容类型response.reset();response.setContentLength((int) new File(filePath).length());response.setContentType("application/octet-stream");response.addHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode("⽂件名.xlsx", "UTF-8")+ "\""); //读取本地图⽚输⼊流inputStream = new FileInputStream(filePath);// 循环取出流中的数据byte[] b = new byte[1024];int len;while ((len = inputStream.read(b)) > 0)response.getOutputStream().write(b, 0, len);} finally{if(inputStream != null){inputStream.close();}}logger.debug("导出志愿者/⼈才数据成功!");} catch (Exception e) {e.printStackTrace();logger.error("导出志愿者/⼈才数据异常!");}}Servicepublic void exportData(List<Map<String, Object>> volunteerMapList, String filePath) throws Exception {String[] alias = {"头像", "名称", "个⼈/团体", "志愿者/⼈才", "性别", "⽣⽇", "⼿机号","⾝份证", "省份", "市", "区/县", "详细地址", "邮箱", "政治⾯貌", "学历", "民族","职业", "团队⼈数", "艺术特长", "介绍"};String[] keys = {"photo", "name", "type", "talent_type", "sex", "birth_day", "mobile","idcard", "province", "city", "county", "address", "email", "political","education", "nation", "profession", "member_count", "art_spetiality", "content"};File file = new File(filePath);if (!file.exists()) file.createNewFile();FileOutputStream fileOutput = new FileOutputStream(file);XSSFWorkbook workbook = new XSSFWorkbook();int sheetSize = volunteerMapList.size() + 50;double sheetNo = Math.ceil(volunteerMapList.size() / sheetSize);String photoImgPath = SysConfigManager.getInstance().getText("/config/sys/rootPath") ;for (int index = 0; index <= sheetNo; index++) {XSSFSheet sheet = workbook.createSheet();workbook.setSheetName(index, "⼈才、志愿者" + index);XSSFRow row = sheet.createRow(0);sheet.setColumnWidth(0, 2048);XSSFCell cell;XSSFCellStyle cellStyle = workbook.createCellStyle();XSSFFont font = workbook.createFont();font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 居中cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 加粗cellStyle.setFont(font);//创建标题for (int i = 0; i < alias.length; i++) {cell = row.createCell(i);cell.setCellValue(alias[i]);cell.setCellStyle(cellStyle);}int startNo = index * sheetSize;int endNo = Math.min(startNo + sheetSize, volunteerMapList.size());cellStyle = workbook.createCellStyle();// 居中cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 写⼊各条记录,每条记录对应excel表中的⼀⾏for (int i = startNo; i < endNo; i++) {int rowNum = i + 1 - startNo ;row = sheet.createRow(rowNum);Map<String, Object> map = (Map<String, Object>) volunteerMapList.get(i);for (int j = 0; j < keys.length; j++) {cell = row.createCell(j);String key = keys[j] ;if (key.equals("photo")){sheet.addMergedRegion(new CellRangeAddress(i + 1,i + 1,i + 1,i + 1)) ;// 头像File photoFile = new File(photoImgPath + map.get(key)) ;if (photoFile.exists()){BufferedImage bufferedImage = ImageIO.read(photoFile) ;ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();ImageIO.write(bufferedImage, "jpg", byteArrayOut);byte[] data = byteArrayOut.toByteArray();XSSFDrawing drawingPatriarch = sheet.createDrawingPatriarch();XSSFClientAnchor anchor = new XSSFClientAnchor(480, 30, 700, 250, (short)0, i + 1, (short) 1, i + 2);drawingPatriarch.createPicture(anchor, workbook.addPicture(data, XSSFWorkbook.PICTURE_TYPE_JPEG)); sheet.setColumnWidth((short)500, (short)500);row.setHeight((short)500);} else {cell.setCellType(XSSFCell.CELL_TYPE_STRING);cell.setCellValue("");}} else {cell.setCellType(XSSFCell.CELL_TYPE_STRING);Object value = map.get(key);cell.setCellValue(value == null ? "" : value.toString());cell.setCellStyle(cellStyle);}}}// 设置列宽for (int i = 1; i < alias.length; i++)sheet.autoSizeColumn(i);// 处理中⽂不能⾃动调整列宽的问题this.setSizeColumn(sheet, alias.length);}fileOutput.flush();workbook.write(fileOutput);fileOutput.close();}// ⾃适应宽度(中⽂⽀持)private void setSizeColumn(XSSFSheet sheet, int size) {for (int columnNum = 0; columnNum < size; columnNum++) {int columnWidth = sheet.getColumnWidth(columnNum) / 256;for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {XSSFRow currentRow;//当前⾏未被使⽤过if (sheet.getRow(rowNum) == null) {currentRow = sheet.createRow(rowNum);} else {currentRow = sheet.getRow(rowNum);}if (currentRow.getCell(columnNum) != null) {XSSFCell currentCell = currentRow.getCell(columnNum);if (currentCell.getCellType() == XSSFCell.CELL_TYPE_STRING) {int length = currentCell.getStringCellValue().getBytes().length;if (columnWidth < length) columnWidth = length;}}}columnWidth = columnWidth * 256 ;sheet.setColumnWidth(columnNum, columnWidth >= 65280 ? 6000 : columnWidth);}}以上所述是⼩编给⼤家介绍java poi导出图⽚到excel⽰例代码解整合,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

HutoolJava工具类库导出Excel并合并数据,全网最详细!

HutoolJava工具类库导出Excel并合并数据,全网最详细!

HutoolJava⼯具类库导出Excel并合并数据,全⽹最详细!ps:基于HuTool⼯具类ExcelWriter合并单元格并且使⽤ jdk1.8 lambda表达式⼀、原始数据模板⼆、合并后的数据按照班级名称、班级分数、⼩组名称、⼩组得分、⼈物名称、⼈物总分进⾏单元格合并合并后效果:三、导⼊依赖ps:pom依赖版本不合适可以换其他版本导出是项⽬中最常见的功能,例如考勤记录导出,账单明细导出,订单记录导出等等。

导出的⼯具类有许多种,⽬前常见的有poi,easypoi,poi...,今天我要说的是基于hutool-poi的导出,hutool-poi是将poi做了封装,简化了⼤量的代码编写。

使⽤⽅式:maven在项⽬的pom.xml中引⼊<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>4.5.1</version></dependency>gradle在项⽬的build.gradle中引⼊compile 'cn.hutool:hutool-all:5.7.3'四、代码逻辑1.查找数据库返回数据voList;2.设置导出表头数据;3.⽤lambda表达式获取字段分组数据;4.遍历数据,设置合并规则;5.将数据保存在list中;6.ExcelWriter导出excel⽂件五、代码1.需实现将⼈物信息导出到excel⽂件中并且还要按照班级名称,⼩组名称,⼈物名称动态合并单元格,所以先创建⼈物对象:@Data@AllArgsConstructor //⽣成所有参数的构造器public class Person {//班级名称private String className;//班级分数private double classScore;//⼩组名称private String groupName;//⼩组分数private double groupScore;//⼈物姓名private String personName;//⼈物总分private double personScore;//学科名称private String subjectName;//学科分数private double subjectScore;}2.导出核⼼代码:@Slf4j@RestController@RequestMapping("/person")public class PersonController {/*** 将页⾯的数据导出并合并单元格* @param response*/@ApiOperation(value = "导出数据到excel")@ApiImplicitParams({@ApiImplicitParam(name = "response", value = "响应体对象", dataType = "HttpServletResponse")})@GetMapping("/export")public void export(HttpServletResponse response)throws Exception{//1.模拟⼀些⼈物对象数据(⼯作中从数据库查出来)List<Person> list = new ArrayList<>();list.add(new Person("⼀班",90,"⼀组",89,"孙悟空",89,"语⽂",89));list.add(new Person("⼀班",90,"⼀组",89,"孙悟空",89,"数学",98));list.add(new Person("⼀班",90,"⼀组",89,"唐僧",78,"语⽂",98));list.add(new Person("⼀班",90,"⼀组",89,"唐僧",78,"数学",78));list.add(new Person("⼀班",90,"⼆组",90,"沙悟净",90,"语⽂",90));list.add(new Person("⼀班",90,"⼆组",90,"沙悟净",90,"数学",90));list.add(new Person("⼆班",91,"⼀组",97,"鲁智深",98,"语⽂",89));list.add(new Person("⼆班",91,"⼀组",97,"鲁智深",98,"数学",98));list.add(new Person("⼆班",91,"⼆组",89,"宋江",89,"语⽂",98));list.add(new Person("⼆班",91,"⼆组",89,"宋江",89,"数学",78));list.add(new Person("⼆班",91,"⼆组",89,"林冲",88,"语⽂",90));list.add(new Person("⼆班",91,"⼆组",89,"林冲",88,"数学",90));//2.定义基础数据List<String> rowHead = CollUtil.newArrayList("班级名称","班级分数","⼩组名称","⼩组分数","⾓⾊姓名","⾓⾊总分","学科名称","学科分数");//3.通过ExcelUtil.getBigWriter()创建Writer对象,BigExcelWriter⽤于⼤数据量的导出,不会引起溢出;ExcelWriter writer = ExcelUtil.getBigWriter();//4.写⼊标题writer.writeHeadRow(rowHead);ServletOutputStream out = null;//5.实现核⼼逻辑try {//6.定义容器保存⼈物数据List<List<Object>> rows = new LinkedList<>();//7.按照班级进⾏分组LinkedHashMap<String, List<Person>> classList = list.stream().collect(Collectors.groupingBy(item -> item.getClassName(),LinkedHashMap::new, Collectors.toList()));//8.定义起始⾏(⽅便分组后合并时从哪⼀⾏开始)//因为标题已经占了⼀⾏,所以数据从第⼆⾏开始写(excel第⼀⾏索引为0)//因需要合并到⼈物分数单元格所以需定义如下起始坐标int indexClassName = 1; //班级名称起始⾏int indexClassScore = 1;int indexGroupName = 1;int indexGroupScore = 1;int indexPersonName = 1;int indexPersonScore = 1;//9.遍历按班级名分组后的list(⽤entrySet效率⽐keySet效率⾼)for (Map.Entry<String, List<Person>> classNameListEntry : classList.entrySet()) {//10.获取按照班级名分组后的集合List<Person> classValue = classNameListEntry.getValue();//11.计算此集合的长度int classSize = classValue.size();//12.如果只有⼀⾏数据不能调⽤merge⽅法合并数据,否则会报错if (classSize == 1){indexClassName += classSize;indexClassScore += classSize;indexGroupName += classSize;indexGroupScore += classSize;indexPersonName += classSize;indexPersonScore += classSize;}else{//13.根据班级名称进⾏合并单元格//合并⾏,第⼀个参数是合并⾏的开始⾏号(⾏号从0开始),第⼆个参数是合并⾏的结束⾏号,第三个参数是合并的列号开始(列号从0开始), //第四个参数是合并的列号结束,第五个参数是合并后的内容,null不设置,第六个参数指是否⽀持设置样式,true指的是。

java实现导出Excel(跨行跨列)

java实现导出Excel(跨行跨列)

java实现导出Excel(跨行跨列)在Java中,可以使用Apache POI库来实现导出Excel文件,并且可以实现跨行和跨列的功能。

Apache POI是一个开源的Java库,可以处理Microsoft Office格式的文档,包括Excel。

以下是使用Apache POI库实现导出Excel文件的步骤:1. 首先,需要引入Apache POI依赖。

可以在Maven或Gradle中添加以下依赖项:```xml<!-- Apache POI --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>2. 创建一个Workbook对象,该对象代表一个Excel文件:```javaWorkbook workbook = new XSSFWorkbook(;```3. 创建一个Sheet对象,该对象代表Excel文件中的一个工作表:```javaSheet sheet = workbook.createSheet("Sheet1");```4. 创建行和单元格,根据需要设置跨行和跨列的属性。

可以使用CellRangeAddress类来实现跨行和跨列的功能:```javaRow row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("跨行跨列");//合并单元格,从第1行到第3行,从第1列到第5列CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 2, 0, 4);sheet.addMergedRegion(cellRangeAddress);5. 将数据写入Excel文件中的单元格:```javaRow row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Hello");```6. 将Workbook对象写入到文件中:```javaFileOutputStream fileOutputStream = new FileOutputStream("output.xlsx");workbook.write(fileOutputStream);fileOutputStream.close(;```完整的示例代码如下所示:```javaimport ermodel.*;import org.apache.poi.ss.util.CellRangeAddress;import ermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;public class ExcelExporterpublic static void main(String[] args) throws IOExceptionWorkbook workbook = new XSSFWorkbook(;Sheet sheet = workbook.createSheet("Sheet1");Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("跨行跨列");//合并单元格,从第1行到第3行,从第1列到第5列CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 2, 0, 4);sheet.addMergedRegion(cellRangeAddress);FileOutputStream fileOutputStream = newFileOutputStream("output.xlsx");workbook.write(fileOutputStream);fileOutputStream.close(;System.out.println("Excel文件导出成功!");}```执行该代码后,会在项目的根目录下生成一个名为`output.xlsx`的Excel文件,其中包含一个跨行和跨列的单元格。

JAVA的poi实现模版导出excel(带图片)

JAVA的poi实现模版导出excel(带图片)

下面是本人使用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();}}********************************************************************* *******/}。

java导出excel浏览器直接下载或者或以文件形式导出

java导出excel浏览器直接下载或者或以文件形式导出

java导出excel浏览器直接下载或者或以⽂件形式导出看代码吧~/*** excel表格直接下载*/public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletResponse httpServletResponse,String fileName) throws Exception {//响应类型为application/octet- stream情况下使⽤了这个头信息的话,那就意味着不想直接显⽰内容httpServletResponse.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);//attachment为以附件⽅式下载httpServletResponse.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileName + ".xls","utf-8"));/*** 代码⾥⾯使⽤Content-Disposition来确保浏览器弹出下载对话框的时候。

* response.addHeader("Content-Disposition","attachment");⼀定要确保没有做过关于禁⽌浏览器缓存的操作*/httpServletResponse.setHeader("Cache-Control", "No-cache");httpServletResponse.flushBuffer();wb.write(httpServletResponse.getOutputStream());wb.close();}/*** excel以⽂件的形式导出* @throws Exception*/public static void exportExcelByFile(HSSFWorkbook wb,String fileName,String path) throws Exception{ByteArrayOutputStream stream = new ByteArrayOutputStream();wb.write(stream);FileOutputStream outputStream = new FileOutputStream(path + fileName);outputStream.write(stream.toByteArray());stream.close();outputStream.close();}java查询数据导出excel并返回给浏览器下载效果图:1.点击导出表按钮2.接着就会出现下图3.点击上图中的确定按钮再接着就会出现下图4.点击上图中的保存按钮接着就会出现下图,浏览器下载完成后的提⽰5.打开下载好的⽂件如下图好了,废话不多少,上代码jsp前端代码<div style="height:30px;"><a>时间:</a><input id="startDateConsume" type="text" class="easyui-datebox"> <a>-</a><input id="endDateConsume" type="text" class="easyui-datebox"><a>消费类型:</a><select id="consumesType" name=""><option value="0" selected="selected">所有</option><option value="1">报名费</option><option value="2">酒⽔零⾷类</option></select><a>⽀付状态:</a><select id="conPaymentStatus" name=""><option value="0" selected="selected">所有</option><option value="1">未⽀付</option><option value="2">已⽀付</option></select><a id="btnConsumesSearch" class="easyui-linkbutton"data-options="iconCls:'icon-search'" style="margin-left:10px">查询</a><a>(查询出来的数据可统计)</a><a id="consumesOutExcel" class="easyui-linkbutton" style="" data-options="iconCls:'icon-redo'">导出表</a></div>js前端代码$(function() {//导出excel表$('#consumesOutExcel').on('click',function(){exportExcel();});});function exportExcel() {$.messager.confirm('确认', '确认把该搜索结果导出Excel表格?', function(r) {if (r) {var startTime = $('#startDateConsume').val();var endTime = $('#endDateConsume').val();var consumesType = $('#consumesType').val();var conPaymentStatus = $('#conPaymentStatus').val();$.messager.progress({title : '处理中',msg : '请稍后',});$.messager.progress('close');location.href="web/vip/exportExcel.xlsx?startTime=" rel="external nofollow" +startTime+"&endTime="+endTime+"&consumesType="+consumesType+"&conPaymentStatus="+conPaymentStatus; }});}java后端代码@Controller@RequestMapping("/vip")public class VipController {//⽂件下载:导出excel表@RequestMapping(value = "/exportExcel.xlsx",method = RequestMethod.GET)@ResponseBodypublic void exportExcel(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{//⼀、从后台拿数据if (null == request || null == response){return;}List<VipConsumes> list = null;String startTime = request.getParameter("startTime");String endTime = request.getParameter("endTime");int consumesType = Integer.parseInt(request.getParameter("consumesType"));int conPaymentStatus =Integer.parseInt(request.getParameter("conPaymentStatus"));VipConsumesExample example = new VipConsumesExample();if(consumesType!=0 && conPaymentStatus!=0){example.createCriteria().andTimeBetween(startTime, endTime).andConsumeTypeEqualTo(consumesType).andStatusEqualTo(conPaymentStatus);}else if(consumesType ==0 && conPaymentStatus!=0) {example.createCriteria().andTimeBetween(startTime, endTime).andStatusEqualTo(conPaymentStatus);}else if(consumesType!=0 && conPaymentStatus==0){example.createCriteria().andTimeBetween(startTime, endTime).andConsumeTypeEqualTo(consumesType);}else {example.createCriteria().andTimeBetween(startTime, endTime);}list = this.vipConsumesDao.selectByExample(example);//⼆、数据转成excelrequest.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("application/x-download");String fileName = "消费记录.xlsx";fileName = URLEncoder.encode(fileName, "UTF-8");response.addHeader("Content-Disposition", "attachment;filename=" + fileName); // 第⼀步:定义⼀个新的⼯作簿XSSFWorkbook wb = new XSSFWorkbook();// 第⼆步:创建⼀个Sheet页XSSFSheet sheet = wb.createSheet("startTimeendTime");sheet.setDefaultRowHeight((short) (2 * 256));//设置⾏⾼sheet.setColumnWidth(0, 4000);//设置列宽sheet.setColumnWidth(1,5500);sheet.setColumnWidth(2,5500);sheet.setColumnWidth(3,5500);sheet.setColumnWidth(11,3000);sheet.setColumnWidth(12,3000);sheet.setColumnWidth(13,3000);XSSFFont font = wb.createFont();font.setFontName("宋体");font.setFontHeightInPoints((short) 16);XSSFRow row = sheet.createRow(0);XSSFCell cell = row.createCell(0);cell.setCellValue("流⽔号 ");cell = row.createCell(1);cell.setCellValue("微信名 ");cell = row.createCell(2);cell.setCellValue("微信订单号");cell = row.createCell(3);cell.setCellValue("消费时间");cell = row.createCell(4);cell.setCellValue("消费类型");cell = row.createCell(5);cell.setCellValue("剩余积分 ");cell = row.createCell(6);cell.setCellValue("新增积分 ");cell = row.createCell(7);cell.setCellValue("扣除积分 ");cell = row.createCell(8);cell.setCellValue("消费⾦额");cell = row.createCell(9);cell.setCellValue("⽀付⽅式");cell = row.createCell(10);cell.setCellValue("⽀付状态 ");cell = row.createCell(11);cell.setCellValue("钱包原始⾦额");cell = row.createCell(12);cell.setCellValue("钱包扣除⾦额");cell = row.createCell(13);cell.setCellValue("钱包剩余⾦额");XSSFRow rows;XSSFCell cells;for (int i = 0; i < list.size(); i++) {// 第三步:在这个sheet页⾥创建⼀⾏rows = sheet.createRow(i+1);// 第四步:在该⾏创建⼀个单元格cells = rows.createCell(0);// 第五步:在该单元格⾥设置值cells.setCellValue(list.get(i).getConsumeId());cells = rows.createCell(1);cells.setCellValue(list.get(i).getName());cells = rows.createCell(2);cells.setCellValue(list.get(i).getOrderNumber());cells = rows.createCell(3);cells.setCellValue(list.get(i).getTime());cells = rows.createCell(4);if (list.get(i).getConsumeType() == 2) {cells.setCellValue("酒⽔零⾷费");} else {cells.setCellValue("报名费");}cells = rows.createCell(5);cells.setCellValue(list.get(i).getIntegral());cells = rows.createCell(6);cells.setCellValue(list.get(i).getIntegralIn());cells = rows.createCell(7);cells.setCellValue(list.get(i).getIntegralOut());cells = rows.createCell(8);cells.setCellValue(list.get(i).getMoney());cells = rows.createCell(9);if (list.get(i).getPayment() == 2) {cells.setCellValue("积分抵现");} else if (list.get(i).getPayment() == 3) {cells.setCellValue("微信⽀付");} else if (list.get(i).getPayment() == 4) {cells.setCellValue("现⾦");} else if (list.get(i).getPayment() == 1) {cells.setCellValue("钱包");}cells = rows.createCell(10);if (list.get(i).getStatus() == 2) {cells.setCellValue("已⽀付");} else if (list.get(i).getStatus() == 1) {cells.setCellValue("未⽀付");}cells = rows.createCell(11);cells.setCellValue(list.get(i).getWalletOriginal());cells = rows.createCell(12);cells.setCellValue(list.get(i).getWalletOut());cells = rows.createCell(13);cells.setCellValue(list.get(i).getWalletSurplus());}try {OutputStream out = response.getOutputStream();wb.write(out);out.close();wb.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

exportbigexcel 用法

exportbigexcel 用法

exportbigexcel 用法ExportBigExcel是一个基于Java的开源项目,用于将大量数据导出到Excel文件中。

它提供了方便的方式来处理大型数据集,并将其转换为可读取和分析的Excel文件。

在本文中,我们将详细讨论ExportBigExcel项目的用法,解释其核心功能,以及提供一些示例代码来帮助你更好地理解和应用这个项目。

一、导入ExportBigExcel要使用ExportBigExcel项目,首先我们需要将其导入到我们的Java项目中。

我们可以通过以下方式来实现:1. 在pom.xml文件中添加ExportBigExcel的依赖项:xml<dependency><groupId>com.github.export-big-excel</groupId><artifactId>export-big-excel</artifactId><version>1.0.0</version></dependency>2. 或者,您可以从项目的GitHub存储库中下载ExportBigExcel的JAR文件,并将其添加到您的项目中。

在完成导入过程后,我们就可以开始使用ExportBigExcel项目了。

二、创建数据模型在使用ExportBigExcel将数据导出到Excel文件之前,我们需要先创建一个数据模型。

数据模型是一个POJO类,定义了我们要导出的数据的字段和属性。

例如,如果我们要导出一个学生信息列表,我们可以创建一个名为Student的类,如下所示:javapublic class Student {private String name;private int age;private String grade;省略构造函数、getter和setter方法}在这个例子中,我们定义了学生的姓名、年龄和班级等属性。

Java中用POI实现将数据导出到Excel

Java中用POI实现将数据导出到Excel

Java中⽤POI实现将数据导出到Excel ⼀、前⾔数据导出为Excel在我们写项⽬的过程中经常⽤到需要⽤到的jar包poi-3.17.jar⼆、具体实现步骤//第⼀步创建⼀个webbook,对应⼀个Excel⽂件HSSFWorkbook wb=new HSSFWorkbook();//第⼆步,在webbook中添加⼀个sheet,对应Excel⽂件中的sheetHSSFSheet sheet=wb.createSheet("⾷物信息数据");//第三步,在sheet中添加表头第0⾏HSSFRow row = sheet.createRow(0);//第四步,创建单元格,并设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);//居中格式HSSFCell cell = row.createCell(0);cell.setCellValue("编号");cell.setCellStyle(style);cell=row.createCell((short)1);cell.setCellValue("名称");cell.setCellStyle(style);cell=row.createCell((short)2);cell.setCellValue("类型");cell.setCellStyle(style);cell=row.createCell((short)3);cell.setCellValue("单价");cell.setCellStyle(style);cell=row.createCell((short)4);cell.setCellValue("库存");cell.setCellStyle(style);//第五步,写⼊实体数据,从数据库拿数据FoodController controller=new FoodController();List<Foods> foodsList = controller.foodsList(null, null);for (int i = 0; i < foodsList.size(); i++) {//创建单元格,并赋值row=sheet.createRow(i+1);Foods foods = foodsList.get(i);row.createCell((short)0).setCellValue(foods.getId());row.createCell((short)1).setCellValue(foods.getName());row.createCell((short)2).setCellValue(foods.getType());row.createCell((short)3).setCellValue(foods.getPrice());row.createCell((short)4).setCellValue(foods.getNum());}//第六步,下载ExcelOutputStream out=null;out=response.getOutputStream();String fileName="⾷物信息.xls";response.setContentType("application/x-=msdownload");response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(fileName, "UTF-8"));wb.write(out);三、实现效果图导出成功后数据成功显⽰到此这篇关于Java中⽤POI实现将数据导出到Excel的⽂章就介绍到这了,更多相关java数据导出到Excel内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

java操作Excel 详解

java操作Excel 详解

{ for ( int j = 0 ; j < columnum; j ++ ) {
Cell cell1 = sheet.getCell(j, i);
String result = cell1.getContents(); System.out.print(result);
System.out.print( " \t " );
JXL 操作 Excel
Jxl create 代码 java 表格操作类库 jxl poi jxl 是一个韩国人写的 java 操作 excel 的工具, 在开源世界中,有两套比较有影响的 API 可供使用,一 个是 POI,一个是 jExcelAPI。其中功能相对 POI 比较弱一点。但 jExcelAPI 对中文支持非常好,API 是纯 Java 的,并不依赖 Windows 系统,即使运行在 Linux 下,它同样能够正确的处理 Excel 文件。另 外需要说明的是,这套 API 对图形和图表的支持很有限,而且仅仅识别 PNG 格式。 使用如下: 搭建环境 将下载后的文件解包,得到 jxl.jar,放入 classpath,安装就完成了。 基本操作 一、创建、写入文件 拟生成一个名为“test.xls”的 Excel 文件,其中第一个工作表被命名为 “第一页”,大致效果如下: package test;
public class UpdateExcel { public static void main(String args[]) { try { // Excel 获得文件 Workbook wb = Workbook.getWorkbook( new File( " test.xls " )); // 打开一个文件的副本,并且指定数据写回到原文件 WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ), wb); // 添加一个工作表 WritableSheet sheet = book.createSheet( " 第二页 " , 1 ); sheet.addCell( new Label( 0 , 0 , " 第二页的测试数据 " )); book.write(); book.close(); } catch (Exception e) { System.out.println(e); } }

java实现数据的Excel导出,自定义导出字段,转换字典值

java实现数据的Excel导出,自定义导出字段,转换字典值

java实现数据的Excel导出,⾃定义导出字段,转换字典值第⼀版代码:基础功能跳转此⽂章:简介新增功能:1. 添加⾃定义字段导出功能, ⽤户可以选择字段进⾏导出2. 将字典类型数据进⾏转换(如:0=⼥,1=男, 将0转换为⼥, 1转换为男)3. 添加表头格式4. 随机⽂件名称, 防⽌多次导出时⽂件覆盖问题实现代码Excel注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface Excel {/*** 导出到Excel中的名字*/String name() default "";/*** ⽇期格式, 如: yyyy-MM-dd*/String dateFormat() default "";/*** 字典的key值*/String dictKey() default "";/*** 读取内容转表达式 (如: 0=男,1=⼥,2=未知)*/String dictExp() default "";}123456789101112131415161718192021222324public class ExcelUtil<T> {/*** ⼯作薄*/private Workbook wb;/*** ⼯作表*/private Sheet sheet;/*** 需要导出的数据*/private List<T> exportList;/*** 对象的class对象*/private Class<T> clazz;/*** 被选中需要导出的字段名称*/private Map<String, Object> checkedFieldsName;/*** 被选中需要导出的字段对象*/private List<Field> checkedFields;/*** 包含需要字典转换的字段对象*/private List<Field> fieldsContainDict;/*** 对象中的字典值*/private Map<String, Map<String, String>> dicts;private ExcelUtil(){}public ExcelUtil(Class<T> clazz){this.clazz = clazz;}/**** @param list* @param sheetName* @param fieldsName*/public void exportExcel(List<T> list, Map<String, Object> fieldsName, String sheetName){ // 初始化数据init(list, sheetName, fieldsName);// 转换字典值try {convertDict();} catch (IllegalAccessException e) {e.printStackTrace();}// sheet第⼀⾏加⼊名称数据createTopRow();// sheet其他⾏,添加⽬标数据try {createOtherRow();} catch (IllegalAccessException e) {e.printStackTrace();}// 导出wbtry(OutputStream outFile = new FileOutputStream(generateFileName())){wb.write(outFile);} catch (IOException e) {e.printStackTrace();}}}/*** 添加导出数据*/private void createOtherRow() throws IllegalAccessException {for (int rowNum = 1; rowNum <= exportList.size(); rowNum++) {Row row = sheet.createRow(rowNum);T t = exportList.get(rowNum - 1);for (int colNum = 0; colNum < checkedFields.size(); colNum++) {Cell cell = row.createCell(colNum);Field field = checkedFields.get(colNum);field.setAccessible(true);// 单元格设置值addCell(cell, field, t);}}}/*** 单元格中添加数据** @param cell 单元格* @param field 字段* @param t list中的⼀条数据*/private void addCell(Cell cell, Field field, T t) throws IllegalAccessException {Class<?> fieldType = field.getType();if (String.class == fieldType) {cell.setCellValue((String) field.get(t));} else if ((Integer.TYPE == fieldType) || (Integer.class == fieldType)) {cell.setCellValue((Integer) field.get(t));} else if ((Long.TYPE == fieldType) || (Long.class == fieldType)) {cell.setCellValue((Long) field.get(t));} else if ((Double.TYPE == fieldType) || (Double.class == fieldType)) {cell.setCellValue((Double) field.get(t));} else if ((Float.TYPE == fieldType) || (Float.class == fieldType)) {cell.setCellValue((Float) field.get(t));} else if (Date.class == fieldType) {String dateFormat = field.getAnnotation(Excels.class).dateFormat();cell.setCellValue(dateFormat((Date) field.get(t), dateFormat));}}/*** 时间格式转换* @param date ⽇期* @param dateFormat ⽇期格式* @return*/private String dateFormat(Date date, String dateFormat) {if (dateFormat == null || "".equals(dateFormat)) {dateFormat = "yyyy-MM-dd HH:mm:ss";}SimpleDateFormat df = new SimpleDateFormat(dateFormat);return df.format(date);}/*** sheet第⼀⾏加⼊名称数据*/private void createTopRow() {Row row = sheet.createRow(0);Map<String, CellStyle> styles = createStyles(wb);for (int index = 0; index < checkedFields.size(); index++) {Cell cell = row.createCell(index);cell.setCellValue(checkedFields.get(index).getAnnotation(Excels.class).name()); System.out.println(styles.get("header"));cell.setCellStyle(styles.get("header"));}}private void convertDict() throws IllegalAccessException {for (Field field : fieldsContainDict) {Excels annotation = field.getAnnotation(Excels.class);String dictKey = annotation.dictKey();field.setAccessible(true);for (T t : exportList) {// 获取字段值String o = (String) field.get(t);field.set(t, dicts.get(dictKey).get(o));}}}/*** 将数据导出Excel** @param list 需要导出的数据* @param sheetName ⼯作表名称*/public void exportExcel(List<T> list, String sheetName){exportExcel(list, null, sheetName);}/*** 将数据导出Excel** @param list 需要导出的数据*/public void exportExcel(List<T> list) {exportExcel(list, null, "sheet");}/*** 初始化*/public void init(List<T> list ,String sheetName, Map<String, Object> fieldsName){ this.checkedFieldsName = fieldsName;this.exportList = list;// 初始化导出数据initExportList();// 初始化⼯作薄initWorkbook();// 初始化⼯作表initSheet(sheetName);// 初始化checkedFields, fieldsContainDictinitFields();// 根据注解⽣成⽣成字典generateObjDict();}/*** 初始化导出数据*/private void initExportList(){// 防⽌导出过程中出现空指针if(Objects.isNull(this.exportList)) {this.exportList = new ArrayList<>();}}/*** 初始化⼯作簿*/private void initWorkbook(){this.wb = new SXSSFWorkbook();}/*** 初始化⼯作表*/private void initSheet(String sheetName){this.sheet = wb.createSheet(sheetName);}* 1.如果checkedFieldsName没有定义(未⾃定义导出字段),所有字段全部导出 * 2.如果checkedFieldsName进⾏了定义,根据定义字段进⾏导出*/private void initFields(){// 获取对象所有字段对象Field[] fields = clazz.getDeclaredFields();// 过滤出checkedFieldsthis.checkedFields = Arrays.asList(fields).stream().filter(item -> {if(!Objects.isNull(this.checkedFieldsName)) {if (item.isAnnotationPresent(Excel.class)) {return checkedFieldsName.containsKey(item.getName());}} else {return item.isAnnotationPresent(Excel.class);}return false;}).collect(Collectors.toList());// 过滤出fieldsContainDictthis.fieldsContainDict = Arrays.asList(clazz.getDeclaredFields()).stream().filter(item -> !"".equals(item.getAnnotation(Excel.class).dictExp())).collect(Collectors.toList(}/*** 通过扫描字段注解⽣成字典数据*/private void generateObjDict(){if(fieldsContainDict.size() == 0) {return;}if(dicts == null) {dicts = new HashMap<>(); // Map<String, List<Map<String, String>>>}for (Field field : fieldsContainDict) {String dictKey = field.getAnnotation(Excel.class).dictKey();String exps = field.getAnnotation(Excel.class).dictExp();String[] exp = exps.split(",");Map<String, String> keyV = new HashMap<>();dicts.put(dictKey, keyV);for (String s : exp) {String[] out = s.split("=");keyV.put(out[0], out[1]);}System.out.println("字典值:"+ dicts);}}/*** 创建表格样式** @param wb ⼯作薄对象* @return 样式列表*/private Map<String, CellStyle> createStyles(Workbook wb){Map<String, CellStyle> styles = new HashMap<String, CellStyle>();// 数据格式CellStyle style = wb.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);style.setVerticalAlignment(VerticalAlignment.CENTER);style.setBorderRight(BorderStyle.THIN);style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setBorderLeft(BorderStyle.THIN);style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());style.setBorderTop(BorderStyle.THIN);dataFont.setFontHeightInPoints((short) 10);style.setFont(dataFont);styles.put("data", style);// 表头格式style = wb.createCellStyle();style.cloneStyleFrom(styles.get("data"));style.setAlignment(HorizontalAlignment.CENTER);style.setVerticalAlignment(VerticalAlignment.CENTER);style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND);Font headerFont = wb.createFont();headerFont.setFontName("Arial");headerFont.setFontHeightInPoints((short) 10);headerFont.setBold(true);headerFont.setColor(IndexedColors.WHITE.getIndex());style.setFont(headerFont);styles.put("header", style);return styles;}/*** ⽣成随机名称,防⽌⽂件复写* @return*/private String generateFileName(){return "D:\\" + UUID.randomUUID().toString().replace("-", "") + ".xlsx";}}12345678910111213141516171819202122232425262728293031323334353637383948 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369使⽤⽅法将对象加上⼯具类需要的注解: @Data@NoArgsConstructor@AllArgsConstructorpublic class Student {@Excel(name = "姓名")private String name;@Excel(name = "年龄")private Integer age;@Excel(name = "出⽣⽇期", dateFormat = "yyyy-MM-dd")private Date birthday;@Excel(name = "性别", dictKey = "sex", dictExp = "1=男,2=⼥")private String sex;}1234567891011121314151617测试字典转换public static void main(String[] args) {ArrayList<Student> data = new ArrayList<>();Student student = new Student();student.setName("tom");student.setAge(19);student.setSex("1");student.setBirthday(new Date());data.add(student);ExcelUtil<Student> util = new ExcelUtil<>(Student.class);util.exportExcel(data, "⼈员信息表");}123456789101112输出结果:结果可以看出, 已将1转换为男了测试选择字段导出:若不⾃定义导出的字段, ⼯具将会把所有带有Excel注解的字段进⾏导出, 如上⽅所⽰。

Java中使用Jxl导出Excel

Java中使用Jxl导出Excel

很多人都说是客户端造成的,没有办法控制,而且后台会记录这个异常,日志也会疯狂爆满,时间长了,肯定会DOWN掉的.
本人觉得大多数可能是第二条问题的原因引起的,即大多数浏览器阻止了窗口的弹出,相当于客户关掉了浏览器,可等效于浏览器端按了Stop ,而这时服务器端还在给客户端发送数据,所以产生了上异常,经过本人的测试,发现只需将网站地址(或本机地址)加入"受信任的站点"即可解决问题,因为这样设置了以后,浏览器就不会阻止窗口的弹出了,这样浏览器就会等到服务器端发送完数据后再进行下面的动作.因而异常就不会发生了.
大概设置方式如下:"工具->internet(选项..)->安全->受信任的站点->站点",将地址加入即可.
} catch (Exceptio来自 e) { e.printStackTrace();
}
}
1.今天做Web Excel导出,报ClientAbortException: socke不用管他,反正不影响导出,有人建议修改TOMCAT源代码,其实这个问题的确不好想。很巧合的是我另一个项目用JMESA做的导出却不会出现这种异常,感觉有的奇怪,源代码源样COPY过来,一样报错。一不小心发现,JMESA是用<a href="javascript:export">提交导出请求,而我用的是<img onclick="export">方法,难道有不同?try.结果果然如此,全部改成<a href="javascript:export">方式,问题解决。
public void ExcelDemo(String filePath, List<AdminBeans> ve) {

java中将数据和图片导出到Excel文件中

java中将数据和图片导出到Excel文件中
HkSfaActivityBC abc = new HkSfaActivityBCImpl();//后台实现类 --审计活动
String activitypk = request.getParameter("activitypk");//活动PK
List childGroups = abc.getChildgroup(activitypk);//得到此活动的所有小组
java.awt.image.BufferedImage bufferImg = ImageIO.read(jpgfile);
javax.imageio.ImageIO.write(bufferImg, "jpg", byteArrayOut);
patriarch.createPicture(anchor,wb.addPicture(
byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));//将统计图片添加到Excel文件中
wb.write(os);
os.close();
net.sf.excelutils.ExcelUtils.addValue("actionServlet", this);
for (int k = 0; k < childGroups.size(); k++) {
ApSfaGroupactivity activityGroup =(ApSfaGroupactivity) childGroups.get(k);//ApSfaGroupactivity为活动小组的Pojo
cell.setEncoding(HSSFCell.ENCODING_UTF_16);

jxl导出图片到excel

jxl导出图片到excel

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.DateFormats;
import jxl.write.DateTime;
import bel;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class jxlPicToExcel {
public void CreateExcel(OutputStream os) throws IOException, RowsExceededException,
WriteException {
sheet.addCell(qinghua);
Label jsj=new Label(1,2,"计算机");
sheet.addCell(jsj);
Number number=new Number(2,2,55.22);
Label zhuanye=new Label(1,1,"专业");

复杂树形结构导入 excel java

复杂树形结构导入 excel java

复杂树形结构导入 Excel Java一、概述树形结构是在实际应用中经常遇到的一种数据结构,它具有层次分明、结构清晰的特点。

在实际的开发中, 需要将树形结构数据导入到Excel表格中,这就需要一种高效可靠的方法来实现。

而Java作为一种广泛应用的编程语言,可以提供丰富的工具和库来帮助开发者完成这一任务。

二、树形结构的导入问题1. 树形结构的数据特点树形结构数据是由节点和节点间的关联关系组成的。

每个节点都有其对应的子节点,因此树形结构是一种递归的数据结构。

这就给数据导入带来了一定的困难,需要考虑如何有效地处理每个节点及其对应的子节点。

2. Excel表格的导入Excel表格是一种常用的数据存储和展示工具,将树形结构数据导入Excel表格可以方便用户查阅和分析数据。

但是,由于Excel表格是二维的数据结构,无法直接表示树形结构,因此需要将树形结构数据进行扁平化处理,再导入到Excel表格中。

3. Java作为开发语言的选择Java作为一种跨评台、面向对象的编程语言,具有丰富的类库和工具,可以提供完善的支持来解决树形结构导入Excel的问题。

开发人员可以利用Java语言提供的工具和库来处理树形结构数据,并将处理结果导出到Excel表格中。

三、解决方案1. 数据扁平化处理在导入Excel表格前,需要将树形结构数据进行扁平化处理。

一种常用的方法是采用递归的方式,将树形结构数据转化为扁平化的列表。

这样每个节点都可以对应一行数据,使得数据能够直接导入到Excel 表格中。

2. 递归算法的设计为了实现数据扁平化处理,需要设计一个高效可靠的递归算法。

该算法需要能够从根节点开始,递归地将每个节点及其子节点转化为列表中的一行数据。

必须考虑到树形结构可能非常庞大复杂,因此需要充分考虑算法的性能和稳定性。

3. Excel导出工具的选择Java提供了丰富的Excel导出工具和库,可以方便地将数据导出到Excel表格中。

开发人员可以根据实际需求选择适合的工具和库,来实现数据的导出功能。

easypoi常用的一些指令和其作用

easypoi常用的一些指令和其作用

easypoi常用的一些指令和其作用标题:easypoi常用指令及其作用Easypoi是一款基于Java语言开发的简单易用的Excel和Word文档操作工具,可以帮助开发人员快速生成和操作Excel和Word文档。

下面将介绍一些常用的easypoi指令及其作用。

1. 导出Excel文档:使用easypoi的`ExcelExportUtil.exportExcel`方法,可以将数据导出为Excel文档。

通过指定模板,可以实现自定义样式和格式。

2. 导入Excel文档:使用easypoi的`ExcelImportUtil.importExcel`方法,可以将Excel文档导入为Java对象,方便后续的数据处理和操作。

3. 导出Word文档:使用easypoi的`WordExportUtil.exportWord07`方法,可以将数据导出为Word文档。

可以根据需求设置模板和样式,实现个性化的文档导出。

4. 数据校验:easypoi提供了数据校验的功能,可以通过`@ExcelVerify`注解对导入的Excel数据进行校验,确保数据的准确性和有效性。

5. 图片导出:通过easypoi,可以将图片导出到Excel或Word文档中。

使用`ExcelExportUtil.exportBigExcel`方法时,可以使用`@Excel`注解的`type`属性将图片导出到Excel中。

6. 表格样式设置:easypoi提供了丰富的表格样式设置功能,可以通过`@Excel`注解的`style`属性设置单元格的样式,包括字体、颜色、对齐方式等。

7. 数据格式化:easypoi支持对数据进行格式化,可以通过`@Excel`注解的`format`属性设置数据的格式,如日期格式、数值格式等。

8. 列排序和隐藏:easypoi支持对导出的Excel列进行排序和隐藏。

通过`@Excel`注解的`sort`属性可以设置列的排序顺序,通过`@Excel`注解的`isColumnHidden`属性可以设置列的隐藏状态。

JAVA导出任意对象的List到Excel

JAVA导出任意对象的List到Excel

JAVA导出任意对象的List到Excel最近弄了个Excel导出的方法,用JAVA的反射和代理省下不少功夫。

代码如下import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import ng.reflect.Method;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;import ermodel.HSSFCell;import ermodel.HSSFRichTextString;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;/**** @param name* Excel保存的主题名* @param data* 里边有Map和List Map存放字段对应关系(ziDuan,字段的第一个字符是序号)* List存放对象数据(listData)* @return [0]是fileName [1]是filePath*/public static String[] objListToExcel(String name, Map data) { Map<String, String> ziDuan = (Map<String, String>)data.get("ziDuan");List listData = (List) data.get("listData");Object[] keys = ziDuan.keySet().toArray();String[] ziDuanKeys = new String[keys.length];for (int k = 0; k < keys.length; k++) {String temp = keys[k].toString();int xuHao = Integer.valueOf(temp.substring(0, 1));ziDuanKeys[xuHao] = temp.substring(1);}try {String path = "hehe.xls";File newFile = new File(path);newFile.createNewFile();System.out.println("创建文件成功:" + path);HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet();for (int i = 0; i < listData.size(); i++) {HSSFRow row = sheet.createRow(i);Object obj = listData.get(i);for (int j = 0; j < ziDuanKeys.length; j++) {HSSFCell cell = row.createCell(j);if (i == 0) {sheet.setColumnWidth(j, 6000);cell.setCellValue(newHSSFRichTextString(ziDuan.get(j+ ziDuanKeys[j])));} else {String ziDuanName = (String) ziDuanKeys[j];System.out.println(ziDuanName);ziDuanName = ziDuanName.replaceFirst(ziDuanName.substring(0, 1), ziDuanName.substring(0, 1).toUpperCase());ziDuanName = "get" + ziDuanName;Class clazz =Class.forName(obj.getClass().getName());Method[] methods = clazz.getMethods();Pattern pattern = pile(ziDuanName);Matcher mat = null;for (Method m : methods) {mat = pattern.matcher(m.getName());if (mat.find()) {Object shuXing = m.invoke(obj, null);if (shuXing != null) {cell.setCellValue(shuXing.toString());//这里可以做数据格式处理} else {cell.setCellValue("");}break;}}}}}OutputStream out = new FileOutputStream(path);wb.write(out);// 写入Fileout.flush();out.close();return null;} catch (Exception e) {e.printStackTrace();return null;}}测试代码如下:public static void main(String args[]) {try {List listData = new ArrayList();for (int i = 0; i < 6; i++) {DoorVo vo = new DoorVo();//要导出的数据类vo.setId("hehe" + i);vo.setFjh("e" + i);vo.setFzzjzmj(90.22);vo.setDeptId("22" + i);listData.add(vo);}Map<String, String> ziDuan = new HashMap<String, String>();ziDuan.put("0fjh", "房间号");//属性前边的数字代表字段的先后顺序ziDuan.put("1fzzjzmj", "非住宅建筑面积");ziDuan.put("2id", "编号");ziDuan.put("3deptId", "部门ID");Map data = new HashMap();data.put("listData", listData);data.put("ziDuan", ziDuan);ListToExcel.objListToExcel("测试", data);} catch (Exception e) {e.printStackTrace();}}。

java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术

java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术

java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术Java是一种流行的编程语言,而JXL技术是一种用于处理Excel文件的Java库。

在本文中,我们将一步一步地介绍如何使用JXL技术导入和导出Excel文件。

我们将从JXL技术的概述开始,然后讨论如何导入Excel文件,接着是如何导出Excel文件。

JXL技术是一个基于Java的开源库,用于读取、写入和操作Microsoft Excel文件。

它提供了一组API,可以方便地处理Excel文件中的单元格、行和列。

不仅可以读取现有的Excel文件,还可以创建新的Excel文件并在其中写入数据。

JXL技术支持Excel的各种版本,包括xls和xlsx格式。

接下来,我们将讨论如何导入Excel文件。

首先,我们需要在项目中引入JXL库的依赖。

在Maven项目中,我们可以将以下依赖添加到pom.xml 文件中:xml<dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency>一旦我们引入了JXL依赖,我们就可以使用它的API来导入Excel文件。

首先,我们需要创建一个Workbook对象,它代表整个Excel文件。

我们可以使用Workbook类的静态方法getWorkbook()来打开一个现有的Excel文件,例如:javaWorkbook workbook = Workbook.getWorkbook(newFile("path/to/excel.xls"));在Workbook对象上,我们可以执行各种操作,例如获取特定的工作表、读取单元格的值等。

HutoolJava工具类库导出Excel,超级简单!

HutoolJava工具类库导出Excel,超级简单!

HutoolJava⼯具类库导出Excel,超级简单!⾸先在POM.xml中加⼊GAV<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.0.7</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.17</version></dependency>Excel写⼊实体类import lombok.AllArgsConstructor;import lombok.Data;import java.util.Date;@Data@AllArgsConstructorpublic class User {private String name;private int age;private Date birthday;}然后在控制层使⽤就⾏@RequestMapping("/export")@ResponseBodypublic void export(HttpServletResponse response) {List<User> list = new ArrayList<>();list.add(new User("zhangsan0", "1231", new Date()));list.add(new User("zhangsan1", "1232", new Date()));list.add(new User("zhangsan2", "1233", new Date()));list.add(new User("zhangsan3", "1234", new Date()));list.add(new User("zhangsan4", "1235", new Date()));list.add(new User("zhangsan5", "1236", new Date()));// 通过⼯具类创建writer,默认创建xls格式ExcelWriter writer = ExcelUtil.getWriter();//⾃定义标题别名writer.addHeaderAlias("name", "姓名");writer.addHeaderAlias("age", "年龄");writer.addHeaderAlias("birthDay", "⽣⽇");// 合并单元格后的标题⾏,使⽤默认标题样式writer.merge(2, "申请⼈员信息");// ⼀次性写出内容,使⽤默认样式,强制输出标题writer.write(list, true);//out为OutputStream,需要写出到的⽬标流//response为HttpServletResponse对象response.setContentType("application/vnd.ms-excel;charset=utf-8");//test.xls是弹出下载对话框的⽂件名,不能为中⽂,中⽂请⾃⾏编码String name = StringUtils.toUtf8String("申请学院");response.setHeader("Content-Disposition", "attachment;filename=" + name + ".xls");ServletOutputStream out = null;try {out = response.getOutputStream();writer.flush(out, true);} catch (IOException e) {e.printStackTrace();} finally {// 关闭writer,释放内存writer.close();}//此处记得关闭输出Servlet流IoUtil.close(out);}Excel读取1.读取Excel中所有⾏和列,都⽤列表表⽰ExcelReader reader = ExcelUtil.getReader("d:/aaa.xlsx");List<List<Object>> readAll = reader.read();2.读取为Map列表,默认第⼀⾏为标题⾏,Map中的key为标题,value为标题对应的单元格值。

java输出表格

java输出表格

竭诚为您提供优质文档/双击可除java输出表格篇一:java导出报表exceljava导出excel表格20xx-06-0111:03:56作者:zhuangjixiang收藏我要投稿[java]之前做项目的时候需要数据库导出excel格式,由于项目赶没完成,现在分享下如何用java导出excel。

话不多说案例如下:之前做项目的时候需要数据库导出excel格式,由于项目赶没完成,现在分享下如何用java导出excel。

话不多说案例如下:首先要做的是导入一个jxl的包,网上很多。

首先是不连接数据库数据[java]packagejxltest;importjava.io.Fileoutputstream;importjava.io.outputstream;importjava.text.simpledateFormat; importjava.util.arraylist; importjava.util.date; importjava.util.list;importjxl.*;importjxl.format.alignment; importjxl.format.border; importjxl.format.borderlinestyle; importjxl.format.cellFormat; importjxl.write.boolean; bel;importjxl.write.number; importjxl.write.writablecellFormat; importjxl.write.writableFont; importjxl.write.writablesheet; importjxl.write.writableworkbook; publicclassjxlexample{/***数据库导出至excel表格*/publicstaticvoidmain(string[]args){ //准备设置excel工作表的标题string[]title={"编号","产品名称","产品价格","产品数量","生产日期","产地","是否出口"};try{//获得开始时间longstart=system.currenttimemillis();//输出的excel的路径stringfilepath="e:\\testjxl.xls";//创建excel工作薄writableworkbookwwb;//新建立一个jxl文件,即在e盘下生成testjxl.xlsoutputstreamos=newFileoutputstream(filepath);wwb=workbook.createworkbook(os);//添加第一个工作表并设置第一个sheet的名字writablesheetsheet=wwb.createsheet("产品清单",0);labellabel;for(inti=0;i //label(x,y,z)代表单元格的第x+1列,第y+1行,内容z//在label对象的子对象中指明单元格的位置和内容label=newlabel(i,0,title[i]);//将定义好的单元格添加到工作表中sheet.addcell(label);}//下面是填充数据/**保存数字到单元格,需要使用jxl.write.number*必须使用其完整路径,否则会出现错误**///填充产品编号jxl.write.numbernumber=newjxl.write.number(0,1,20xx 1001);sheet.addcell(number);//填充产品名称label=newlabel(1,1,"金鸽瓜子");sheet.addcell(label);/**定义对于显示金额的公共格式*jxl会自动实现四舍五入*例如2.456会被格式化为 2.46,2.454会被格式化为2.45**/jxl.write.numberFormatnf=newjxl.write.numberFormat("#.##");jxl.write.writablecellFormatwcf=newjxl.write.writab lecellFormat(nf);//填充产品价格jxl.write.numbernb=newjxl.write.number(2,1,2.45,wcf);sheet.addcell(nb);//填充产品数量jxl.write.numbernumb=newjxl.write.number(3,1,200);sheet.addcell(numb);/**定义显示日期的公共格式*如:yyyy-mm-ddhh:mm**/simpledateFormatsdf=newsimpledateFormat("yyyy-mm-dd ");stringnewdate=sdf.format(newdate());//填充出产日期label=newlabel(4,1,newdate);sheet.addcell(label);//填充产地label=newlabel(5,1,"陕西西安");sheet.addcell(label);/**显示布尔值**/jxl.write.booleanbool=newjxl.write.boolean(6,1,true);sheet.addcell(bool);/**合并单元格*通过writablesheet.mergecells(intx,inty,intm,intn);来实现的*表示将从第x+1列,y+1行到m+1列,n+1行合并***/sheet.mergecells(0,3,2,3);label=newlabel(0,3,"合并了三个单元格");packagejxltest;importjava.io.Fileoutputstream;importjava.io.outputstream; importjava.text.simpledateFormat; importjava.util.arraylist; importjava.util.date; importjava.util.list;importjxl.*;importjxl.format.alignment; importjxl.format.border; importjxl.format.borderlinestyle; importjxl.format.cellFormat; importjxl.write.boolean; bel;importjxl.write.number; importjxl.write.writablecellFormat; importjxl.write.writableFont; importjxl.write.writablesheet; importjxl.write.writableworkbook; publicclassjxlexample{/***数据库导出至excel表格*/publicstaticvoidmain(string[]args){//准备设置excel工作表的标题string[]title={"编号","产品名称","产品价格","产品数量","生产日期","产地","是否出口"};try{//获得开始时间longstart=system.currenttimemillis();//输出的excel的路径stringfilepath="e:\\testjxl.xls";//创建excel工作薄writableworkbookwwb;//新建立一个jxl文件,即在e盘下生成testjxl.xlsoutputstreamos=newFileoutputstream(filepath);wwb=workbook.createworkbook(os);//添加第一个工作表并设置第一个sheet的名字writablesheetsheet=wwb.createsheet("产品清单",0);labellabel;for(inti=0;i //label(x,y,z)代表单元格的第x+1列,第y+1行,内容z//在label对象的子对象中指明单元格的位置和内容label=newlabel(i,0,title[i]);//将定义好的单元格添加到工作表中sheet.addcell(label);}//下面是填充数据/**保存数字到单元格,需要使用jxl.write.number*必须使用其完整路径,否则会出现错误**///填充产品编号jxl.write.numbernumber=newjxl.write.number(0,1,20xx 1001);sheet.addcell(number);//填充产品名称label=newlabel(1,1,"金鸽瓜子");sheet.addcell(label);/**定义对于显示金额的公共格式*jxl会自动实现四舍五入*例如2.456会被格式化为 2.46,2.454会被格式化为2.45**/jxl.write.numberFormatnf=newjxl.write.numberFormat("#.##");jxl.write.writablecellFormatwcf=newjxl.write.writab lecellFormat(nf);//填充产品价格jxl.write.numbernb=newjxl.write.number(2,1,2.45,wcf);sheet.addcell(nb);//填充产品数量jxl.write.numbernumb=newjxl.write.number(3,1,200);sheet.addcell(numb);/**定义显示日期的公共格式*如:yyyy-mm-ddhh:mm**/simpledateFormatsdf=newsimpledateFormat("yyyy-mm-dd ");stringnewdate=sdf.format(newdate());//填充出产日期label=newlabel(4,1,newdate);sheet.addcell(label);//填充产地label=newlabel(5,1,"陕西西安");sheet.addcell(label);/**显示布尔值**/jxl.write.booleanbool=newjxl.write.boolean(6,1,true);sheet.addcell(bool);/**合并单元格*通过writablesheet.mergecells(intx,inty,intm,intn);来实现的*表示将从第x+1列,y+1行到m+1列,n+1行合并***/sheet.mergecells(0,3,2,3);label=newlabel(0,3,"合并了三个单元格");[java]viewplaincopyprintsheet.addcell(label);***定义公共字体格式*通过获取一个字体的样式来作为模板篇二:java实现生成pdF(包含文字,表格,图片) 需要的lib:itext-2.1.7.jaritextasian.jarpackagecom.demo.test;importjava.awt.color;importjava.io.File;importjava.io.Fileoutputstream;importcom.lowagie.text.chunk;importcom.lowagie.text.document;importcom.lowagie.text.Font;importcom.lowagie.text.chapter;importcom.lowagie.text.element;importcom.lowagie.text.image;importcom.lowagie.text.pagesize;importcom.lowagie.text.paragraph;importcom.lowagie.text.phrase;importcom.lowagie.text.pdf.baseFont;importcom.lowagie.text.pdf.pdfpcell;importcom.lowagie.text.pdf.pdfptable;importcom.lowagie.text.pdf.pdfwriter;/***生成pdF文件**@authorsmile*qq:1963938311**/publicclasspdFdemo{privatecolorblack=newcolor(0,0,0);//黑色privatecolorred=newcolor(255,0,0);//红色privatecolorblue=newcolor(0,0,255);//蓝色privateintbold=Font.bold;//粗体privateintnormal=Font.noRmal;//正常字体privateintitalic=Font.italic;//斜体privateintbolditalic=Font.bolditalic;//粗斜体privatefloatsetting=100;//首行缩进参数publicdocumentcreatedoc(stringfilename)throwsexception{。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

org.apache.poi.poifs.filesystem.POIFSFileSystem fs = new POIFSFileSystem(fos);
ermodel.HSSFWorkbook wb = new HSSFWorkbook(fs);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/*
相关Jar包和excel文件在我的资源中有,去下载就是了
*/
java.io.File reportFile1 =
new File(context.getRealPath("/reports/hab/apsfa/statPic.xls"));//此Excel文件是服务器上的,一个包含一张统计图片的Excel模板
java.io.FileInputStream fos = new FileInputStream(reportFile1);//文件输入流
byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));//将统计图片添加到Excel文件中
wb.write(os);
os.close();
net.sf.excelutils.ExcelUtils.addValue("actionServlet", this);
response.reset();
response.setContentType("application/vnd.ms-excel");
ServletContext context = this.getServlet().getServletContext();
try {
String path = context.getRealPath("/reports/hab/apsfa/PicStat.xls");//导出的Excel文件在服务器上的输出路径
double[][] data = bc.problemCollect(activitypk);//得到统计结果,一个二维数组
ermodel.HSSFRow row = sheet.createRow(11);//在第一个工作表中创建一行(第12行)
HkSfaActivityBC abc = new HkSfaActivityBCImpl();//后台实现类 --审计活动
String activitypk = request.getParameter("activitypk");//活动PK
List childGroups = abc.getChildgroup(activitypk);//得到此活动的所有小组
cell.setCellValue(a);
}
}
}
java.io.File jpgfile = new File(barName);//barName 为统计图片在服务器上的路径
mons.io.output.ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();//字节输出流,用来写二进制文件
ermodel.HSSFCell cell = row.createCell((short) (k + 1));//在row中创建单元格
cell.setEncoding(HSSFCell.ENCODING_UTF_16);//设置编码
cell.setCellValue(activityGroup.getName());//给单元格设置值
java.io.FileOutputStream os = new FileOutputStream(path);//文件输出流
String barName =
FileHelper.getUploadDir() + "/" + "collentResult2.jpg";//要导出到Excel文件中的图片路径
for (int k = 0; k < childGroups.size(); k++) {
ApSfaGroupactivity activityGroup =(ApSfaGroupactivity) childGroups.get(k);//ApSfaGroupactivity为活动小组的Pojo
ermodel.HSSFSheet sheet = wb.getSheetAt(0);//Excel文件中的第一个工作表
ermodel.HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
java.awt.image.BufferedImage bufferImg = ImageIO.read(jpgfile);
javax.imageio.ImageIO.write(bufferImg, "jpg", byteArrayOut);
patriarch.createPicture(anchor,wb.addPicture(
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
if (j == 0) {
cell.setCellValue(strs[i - 12]);
} else {
int a = (int) data[i - 12][j - 1];
java中将数据和图片导出到Excel文件中.txt
public ActionForward picExcel(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)throws Exception {
net.sf.excelutils.ExcelUtils.export(getServlet().getServletContext(),config,response.getOutputStream());
} catch ntStackTrace();
ermodel.HSSFClientAnchor anchor =new HSSFClientAnchor(
0,0,350,100,(short) 0,1,(short) 10,10);
HkSfaStatBC bc = new HkSfaStatBCImpl();//后台实现类 --结果统计
ermodel.HSSFRow row1 = sheet.createRow(i);
for (int j = 0; j < data[0].length + 1; j++) {
ermodel.HSSFCell cell = row1.createCell((short) j);
String config = null;
config = "/reports/hab/apsfa/PicStat.xls";
response.setHeader("Content-Disposition","attachment; filename=\"" + "PicStat.xls\"");
}
/* 同前一个循环,给Excel添加数据 */
String[] strs ={ "不适用", "符合", "整改关闭", "不符合", "未检查", "检查数量", "已选择总数" };
for (int i = 12; i < strs.length + 12; i++) {
相关文档
最新文档