JAVA导出EXCEL类(TSV格式)

合集下载

java自定义注解在excel导出时的使用

java自定义注解在excel导出时的使用

java自定义注解在excel导出时的使用在Java中,自定义注解是一种用于在程序中进行标记的机制。

通过定义自己的注解,可以为类、方法、字段等元素添加元数据,用于描述它们的特性和行为。

在Excel导出时,自定义注解可以用来定义导出的字段和格式,并且可以通过反射机制来读取注解信息,实现自动导出的功能。

下面是一个简单的自定义注解示例:```javaimport ng.annotation.*;String name( default ""; // 导出字段的名称int width( default 20; // 导出字段的宽度String format( default ""; // 导出字段的格式```定义了注解之后,可以在需要导出的类中使用该注解对字段进行标记。

例如:```javapublic class Userprivate String name;private int age;//其他字段和方法...```接下来,可以编写一个用于导出Excel的工具类。

该类可以使用反射来读取类的字段和注解信息,并根据注解信息生成相应的Excel文件。

以下是一个简单的Excel导出工具类示例:```javapublic class ExcelExportUtilpublic static <T> void exportToExcel(List<T> data, Class<T> clazz, String filePath)//创建工作簿和工作表Workbook workbook = new HSSFWorkbook(;Sheet sheet = workbook.createSheet("Sheet1");//获取类的字段和注解信息Field[] fields = clazz.getDeclaredFields(;for (int i = 0; i < fields.length; i++)Field field = fields[i];ExcelField excelField =field.getAnnotation(ExcelField.class);if (excelField != null)//获取注解信息String fieldName = (;int width = excelField.width(;//设置列宽sheet.setColumnWidth(i, width * 256);//创建表头单元格Row headerRow = sheet.getRow(0);if (headerRow == null)headerRow = sheet.createRow(0);}Cell headerCell = headerRow.createCell(i); headerCell.setCellValue(fieldName);}}//创建数据行for (int i = 0; i < data.size(; i++)T item = data.get(i);Row dataRow = sheet.getRow(i + 1);if (dataRow == null)dataRow = sheet.createRow(i + 1);}for (int j = 0; j < fields.length; j++)Field field = fields[j];if (field.isAccessible()try//获取字段值Object value = field.get(item);//创建数据单元格并填充数据Cell dataCell = dataRow.createCell(j); if (value instanceof String) dataCell.setCellValue((String) value); } else if (value instanceof Integer) dataCell.setCellValue((int) value);} else if (value instanceof Double) dataCell.setCellValue((double) value); }} catch (IllegalAccessException e)e.printStackTrace(;}}}}// 保存Excel文件try (FileOutputStream outputStream = newFileOutputStream(filePath))workbook.write(outputStream);} catch (IOException e)e.printStackTrace(;}}```在上面的示例中,exportToExcel方法接收一个泛型列表和类的字节码对象,通过反射来读取类的字段和注解信息,并根据注解信息生成Excel文件。

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();}}}以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

java excel导入导出总结

java excel导入导出总结

java excel导入导出总结Java是一种常用的编程语言,它具有很多强大的功能和库,可以用来处理各种各样的任务。

其中之一就是处理Excel文件的导入和导出操作。

在本文中,我们将总结一下Java中如何进行Excel的导入和导出操作,并介绍一些常用的技巧和注意事项。

一、Excel的导入操作在Java中,我们可以使用Apache POI库来进行Excel文件的导入操作。

首先,我们需要在项目中引入Apache POI的相关依赖。

然后,我们可以通过以下步骤来实现Excel的导入:1. 创建一个Workbook对象,用于表示Excel文件。

2. 根据文件路径或输入流创建一个InputStream对象,用于读取Excel文件的内容。

3. 根据文件的扩展名(xls或xlsx),创建一个合适的Workbook实现类的对象。

4. 通过Workbook对象的getSheet()方法获取一个Sheet对象,用于表示Excel文件中的一个工作表。

5. 遍历Sheet对象的每一行和每一列,读取单元格中的数据。

注意事项:- 在读取单元格数据时,我们需要根据单元格的类型来选择合适的读取方法。

例如,如果单元格中的数据是字符串类型,我们可以使用getStringCellValue()方法来读取。

- 在处理日期类型的数据时,我们可以使用DateUtil类来将Excel 中的日期值转换为Java中的Date对象。

- 在遍历行和列时,我们可以使用for循环或迭代器来实现。

二、Excel的导出操作与Excel的导入操作类似,我们同样可以使用Apache POI库来进行Excel文件的导出操作。

下面是导出Excel文件的一般步骤:1. 创建一个Workbook对象,用于表示Excel文件。

2. 创建一个Sheet对象,用于表示Excel文件中的一个工作表。

3. 创建行对象和单元格对象,用于表示Excel文件中的行和单元格。

4. 设置单元格的值和格式。

Java导入导出Excel工具类ExcelUtil

Java导入导出Excel工具类ExcelUtil

Java导⼊导出Excel⼯具类ExcelUtil导出就是将List转化为Excel(listToExcel)导⼊就是将Excel转化为List(excelToList)导⼊导出中会出现各种各样的问题,⽐如:数据源为空、有重复⾏等,我⾃定义了⼀个ExcelException异常类,⽤来处理这些问题。

异常类导出⼯具类:public Map<String,Object> exportMessageExcelFile(String title, String[] headers,List dossierList, OutputStream out, String pattern){boolean flag = true;Map<String,Object> map = new HashMap<String,Object>();StringBuffer messageFile = new StringBuffer();// 声明⼀个⼯作薄HSSFWorkbook workbook = new HSSFWorkbook();// ⽣成⼀个表格HSSFSheet sheet = workbook.createSheet(title);// 设置表格默认列宽度为15个字节sheet.setDefaultColumnWidth((short) 15);// ⽣成⼀个样式HSSFCellStyle style = workbook.createCellStyle();style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//产⽣表格标题⾏HSSFRow row = sheet.createRow(0);for (short i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell(i);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text);}for(int i = 0; i< dossierList.size();i++){Object[] obj = (Object[]) dossierList.get(i);row = sheet.createRow(i+1);for (int j = 0; j < obj.length; j++) {HSSFCell cell = row.createCell(j);cell.setCellStyle(style);if(j==0){cell.setCellValue(i+1);//序号}if(j==1){//Logger.debug("obj[5]"+obj[5]);cell.setCellValue(obj[5]==null?"":obj[5].toString());//办理⼈}if(j==2){//Logger.debug("obj[3]"+obj[3]);cell.setCellValue(obj[3]==null?"":obj[3].toString());//办理时间}if(j==3){// Logger.debug("obj[2]"+obj[2]);cell.setCellValue(obj[2]==null?obj[6]==null?"":obj[6].toString():obj[2].toString());//办理意见if(null!=obj[6]&&!"".equals(obj[6])){messageFile.append(obj[6].toString()+",");}break;}}}map.put("messageFile", messageFile.toString().endsWith(",")?messageFile.toString().substring(0, messageFile.toString().length()-1):messageFile.toString());try {workbook.write(out);} catch (IOException e) {e.printStackTrace();flag = false;}finally {//清理资源try {if(out != null){out.close();}} catch (IOException e) {e.printStackTrace();}}map.put("flag", flag);return map;}测试类:public static void main(String[] args) {ExportExcel<Object> ex = new ExportExcel<Object>();String[] headers = { "学号"};List<Object[]> dataset = new ArrayList<Object[]>();dataset.add(new Object[]{"1"});dataset.add(new Object[]{"2"});dataset.add(new Object[]{"3"});dataset.add(new Object[]{"4"});dataset.add(new Object[]{"5"});try {OutputStream out = new FileOutputStream("C://Users//Lenovo//Desktop/aa.xls");ex.exportMessageExcelFile("测试POI导出EXCEL⽂档", headers, dataset, out, "yyyy-MM-dd"); } catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}。

java批量导出excel格式数据(含每条数据的附件)

java批量导出excel格式数据(含每条数据的附件)

,批量导出数据到excel中(包含每条数据对应的附件)本程序功能功能说明采用压缩的方法把用户要导出的excel 文件和excle数据中每条数据对应的文件,打包成一个大文件,输出到缓存区,用户通过浏览器来下载这个文件,缺陷是文件过大时,比如几个G大小的附件,ie下载很慢。

建议用360等支持断点续传的功能的浏览器来下载。

Excel查看附件采用的是链接方式详细如下面截图,点击文件链接,可以链接到相对文件位置的文件夹(因为附件可能是多个,采用的都是文件夹的相对链接的方式实现的),压缩包内存放的文件结构:Excel文件,reportfile(存放附件的文件夹,文件夹结构详细见代码)每行excel 都对应相对的文件夹(reportfile内的某一个子文件夹和excel的行号相对应),如下截图,红色圈圈链接的就是对应的相应文件夹下的appfile文件夹下的文件://引入的类import org.apache.tools.zip.ZipEntry;//把文件写入到压缩对象outimport org.apache.tools.zip.ZipOutputStream;import java.io.*;import java.io.OutputStream;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import ermodel.HSSFCell;import ermodel.HSSFCellStyle;import ermodel.HSSFFont;import ermodel.HSSFRichTextString;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import org.apache.poi.hssf.util.HSSFCellUtil;import org.apache.poi.hssf.util.HSSFColor;import org.apache.poi.hssf.util.Region;import ermodel.Font;import ermodel.HSSFHyperlink;//写入压缩的文件对象privatevoid zipfileinfo(ZipOutputStream out, File f, String base) throws Exception{//记录文件“f”对象在压缩包中的位置及压缩后的文件名称:out.putNextEntry(new ZipEntry(base));、// 写入压缩文件对象FileInputStream in = new FileInputStream(f);int b = 0;byte[] buf = newbyte[1024];while ((b = in.read(buf)) != -1){out.write(buf, 0, b);}in.close();}// 开始压缩文件privatevoid ziptmpfilelist(ZipOutputStream out, String factfielnamelist,String tmpfielnamelist) throws Exception {String[] tmpList = tmpfielnamelist.split(";");String[] fackList = factfielnamelist.split(";");for (int i = 0; i<tmpList.length; i++) {File tmpfile = new File(fackList[i]);zipfileinfo(out, tmpfile, tmpList[i].replaceAll("\\\\", "/"));}}@Overrideprotectedvoid doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// 存放文件的实际位置位置(绝对路径)String factfielnamelist="D:\\iscm\\attachdata\\2015\\0422\\FuaiFugQArVTjpG;D:\\iscm\\a ttachdata\\2015\\0422\\HIxtANutsZrwDTZ;D:\\iscm\\attachdata\\2 015\\0422\\HIxtANutsZrwDTZ";// 存放文件的位置(绝对路径)压缩时对应文件在压缩文件中的位置及名称String tmpfielnamelist = "reportfile\\tmp1\\appfile\\项目审批2.ipa;reportfile\\tmp1\\appfile\\项目审批1.doc;reportfile\\tmp1\\selffile\\app.docx";try {// 存放临时文件的目录(绝对路径)ZipOutputStream out = new ZipOutputStream(new FileOutputStream("d:\\test.zip"));response.reset();response.setContentType("application/octet-stream");response.setHeader("Content-Disposition","attachment;filename=test.zip");// 输出到缓存区方式ZipOutputStream out = newZipOutputStream(response.getOutputStream());// out.setEncoding("gbk");out.setEncoding("gb2312");//System.out.println(zipFileName);ziptmpfilelist(out, factfielnamelist, tmpfielnamelist);//输出到excel中 List<LinkedHashMap<String, Object>> result 是excel 写入的数据集合,这个需要自己重新定义.ExportExcelUtils.exportExcelAppReoort("App报备信息", headers, columns,result, "", out);out.close();} catch (Exception e) {e.printStackTrace();}}创建excel对象并写入压缩包方法/*** 控制点导出Excel的方法* @param title excel中的sheet名称* @param headers 表头* @param columns 表头对应的数据库中的列名* @param result 结果集* @param out 输出流* @param pattern 时间格式* @throws Exception*/publicstaticvoid exportExcelAppReoort(String title, String[] headers, String[] columns, List<LinkedHashMap<String, Object>> result, String filepath, ZipOutputStream out) throws Exception{//java.io.FileOutputStream out=newjava.io.FileOutputStream(filepath);// 声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个表格HSSFSheet sheet = workbook.createSheet(title);// 设置表格默认列宽度为20个字节sheet.setDefaultColumnWidth(20);// 生成一个样式HSSFCellStyle style = workbook.createCellStyle();// 设置这些样式style.setFillForegroundColor(HSSFColor.GOLD.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 生成一个字体HSSFFont font = workbook.createFont();font.setColor(HSSFColor.VIOLET.index);//font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 把字体应用到当前的样式style.setFont(font);// 指定当单元格内容显示不下时自动换行style.setWrapText(true);// 产生表格标题行HSSFRow row1 = sheet.createRow(0);// sheet.addMergedRegion(new CellRangeAddress(1,2,3,4));//合并单元格sheet.addMergedRegion(new Region(0,(short)0,0,(short)19));row1.setHeight((short)600); //设置行高度HSSFCell cell1 = row1.createCell(0);cell1.setCellStyle(style);cell1.setCellValue(title); //"App报备信息"HSSFRow row = sheet.createRow(1);for (int i = 0; i<headers.length; i++) {HSSFCell cell = row.createCell(i);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]); cell.setCellValue(text);}// 遍历集合数据,产生数据行if(result != null){int index = 2;for(LinkedHashMap<String, Object> m:result){row = sheet.createRow(index);int cellIndex = 0;for(String s:columns){HSSFCell cell = row.createCell(cellIndex);//cell.setCellStyle(style2);HSSFRichTextStringrichString = new HSSFRichTextString(m.get(s) == null ? "" : m.get(s).toString());if(s.equals("appAttr") || s.equals("threeSynAttr") ){//当前记录记录附件链接的文件夹位置(文件可能多个,如果一个的话,可以自己处理直接链接指向文件)String tmp=richString.toString();if (!(richString.toString().equals(""))){cell.setCellValue("文件链接");HSSFHyperlink link =new HSSFHyperlink(HSSFHyperlink.LINK_URL);link.setAddress(richString.toString());cell.setHyperlink(link);}}else{if(cellIndex==0)cell.setCellValue(Integer.valueOf(m.get(s).toString()));elsecell.setCellValue(richString);}cellIndex++;}index++;}}//写入压缩包out.putNextEntry(new ZipEntry("appReport.xls"));workbook.write(out); //写入文件}。

关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种。。。

关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种。。。

关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种。

导出excel通⽤模板(程序定义模板导出)转载原⽂:如下代码,本⽅法主要⽤于程序定义模板格式,并导出⽂件。

该⽅法将定义和创建分离,达到了⼀定解耦合,降低了开发复杂度。

但是依然是程序定义模板,对模板的样式需要程序控制,没有达到将数据和样式分离的⽬的。

改良版,关于添加依赖之类的之前⼀篇⽂章⾥⾯有。

这篇是把之前的⽅法抽成通⽤模板。

⼀、添加⼀个实体类package com.lencity.securitymanagementplatform.data.entity;import java.util.List;public class XlsData {public static final int DATA_TYPE_INTEGER = 0;public static final int DATA_TYPE_STRING = 1;private List<String> titles;//表头private List<Integer> types;//数据类型private List<List<Object>> values;存表数据public List<Integer> getTypes() {return types;}public void setTypes(List<Integer> types) {this.types = types;}public List<String> getTitles() {return titles;}public void setTitles(List<String> titles) {this.titles = titles;}public List<List<Object>> getValues() {return values;}public void setValues(List<List<Object>> values) {this.values = values;}}⼆、创建⼀个service类package com.lencity.securitymanagementplatform.service;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import .URLEncoder;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ermodel.HSSFCell;import ermodel.HSSFCellStyle;import ermodel.HSSFDataFormat;import ermodel.HSSFFont;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import ermodel.HorizontalAlignment;import org.springframework.stereotype.Service;import com.lencity.securitymanagementplatform.data.entity.XlsData;@Servicepublic class XlsService {//写⼀个接⼝,哪个控制器需要加上导出excel功能就继承这个接⼝public static interface IXlsOutputProcessor {public XlsData processXlsData(Map<String, Object> condition);}//解析数据创建excelpublic HSSFWorkbook createExcelData(IXlsOutputProcessor processor, Map<String, Object> condition) {XlsData xlsData = processor.processXlsData(condition);HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet("统计表");// 创建⼀个excel表单HSSFRow titleRow = sheet.createRow(0);// 设置列宽,setColumnWidth的第⼆个参数要乘以256,这个参数的单位是1/256个字符宽度sheet.setColumnWidth(1, 15 * 256);sheet.setColumnWidth(3, 20 * 256);HSSFCellStyle style = workbook.createCellStyle();style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));// 设置⽇期格式HSSFFont font = workbook.createFont();// 设置为居中加粗font.setBold(true);style.setAlignment(HorizontalAlignment.CENTER);style.setFont(font);List<String> titles = xlsData.getTitles();HSSFCell cell;/* 构造表头 */for (int i = 0; i < titles.size(); i++) {cell = titleRow.createCell(i);cell.setCellValue(titles.get(i));cell.setCellStyle(style);}int rowNum = 1;List<Integer> dataTypes = xlsData.getTypes();List<List<Object>> values = xlsData.getValues();for (int i = 0; i < values.size(); i++) {List<Object> value = values.get(i);HSSFRow row = sheet.createRow(rowNum);for (int j = 0; j < value.size(); j++) {switch (dataTypes.get(j)) {case XlsData.DATA_TYPE_INTEGER:row.createCell(j).setCellValue((Integer) value.get(j));break;case XlsData.DATA_TYPE_STRING:row.createCell(j).setCellValue((String) value.get(j));break;}}rowNum++;}return workbook;}// 浏览器导出excelpublic void buildExcelDocument(String filename, HSSFWorkbook workbook, HttpServletResponse response)throws Exception {response.reset();response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8")); OutputStream outputStream = response.getOutputStream();workbook.write(outputStream);outputStream.flush();outputStream.close();}// 下载excel模板功能public void downloadTemplate(HttpServletResponse response,HttpServletRequest request) throws Exception {String fileName="导出模板.xls";response.reset();response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8")); String filePath=request.getServletContext().getRealPath("/excel/")+fileName;FileInputStream input=new FileInputStream(filePath);OutputStream out=response.getOutputStream();byte[] b=new byte[2048];int len;while((len=input.read(b))!=-1) {out.write(b,0,len);}response.setHeader("Content-Length", String.valueOf(input.getChannel().size()));input.close();}}三、控制器假设我们要在⽤户页⾯加上导出表格的功能,那就在⽤户的控制器上继承接⼝public class UserController implements IXlsOutputProcessor {继承之后需要在控制器中重写接⼝⽅法,导出的表格样式.png关于封装数据,主要就是根据⾃⼰实际的项⽬需求,来构造数据了// 封装数据@Overridepublic XlsData processXlsData(Map<String, Object> condition) {List<String> titles = new ArrayList<>();//表头List<Integer> dataTypes = new ArrayList<>();//表数据类型List<List<Object>> values = new ArrayList<>();//表头对应的数据titles.add("姓名");dataTypes.add(XlsData.DATA_TYPE_STRING);titles.add("⼿机号码");dataTypes.add(XlsData.DATA_TYPE_STRING);titles.add("职位");dataTypes.add(XlsData.DATA_TYPE_STRING);titles.add("部门");dataTypes.add(XlsData.DATA_TYPE_STRING);List<User> users = userService.getUsersByCondition(condition);XlsData xlsData = new XlsData();xlsData.setTitles(titles);xlsData.setTypes(dataTypes);for (User user : users) {List<Object> tmpList = new ArrayList<>();tmpList.add(user.getName());tmpList.add(user.getMobile());tmpList.add(user.getPosition());tmpList.add(departmentService.getDepartmentNameByDepartmentCode(user.getDepartmentCode()));values.add(tmpList);}xlsData.setValues(values);return xlsData;}// 导出excel,前台js,点击导出excel 关联的路径就是这个@PostMapping(value = "/downLoadXls")@ResponseBodypublic String downLoadXls(Map<String, Object> condition, HttpServletResponse response) throws Exception { String fileName = "导出excel.xls";HSSFWorkbook workbook = xlsService.createExcelData(this, condition);xlsService.buildExcelDocument(fileName, workbook, response);JSONObject jsonObject = new JSONObject();jsonObject.put("code", 1);return jsonObject.toString();}// 下载模板,前台js,点击下载模板关联的路径就是这个@PostMapping(value = "/downloadTemplate")@ResponseBodypublic String downloadTemplate(HttpServletResponse response,HttpServletRequest request) throws Exception { String fileName = "导出excel.xls";xlsService.downloadTemplate(response, request);JSONObject jsonObject = new JSONObject();jsonObject.put("code", 1);return jsonObject.toString();}前台界⾯.png模板的存放位置前台按钮代码<button type="button" class="btn btn-primary waves-effect" onclick="downloadTemplate()" id="downloadTemplate"><i class="material-icons">vertical_align_bottom</i><span>下载模板</span></button><button type="button" class="btn btn-primary waves-effect"onclick="exportExcel()"><i class="material-icons">vertical_align_bottom</i><span>导出表格</span></button>jsform表单⾥⾯是页⾯的表单筛选条件,如果要导数据库所有的数据,可把form表单去掉。

java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出)

java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出)

产品需求产品经理需要导出一个页面的所有的信息到 EXCEL 文件。

需求分析对于 excel 导出,是一个很常见的需求。

最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件。

客户体验 & 服务性能•客户体验如果导出的文件比较大,比如几十万条数据,同步导出页面就会卡主,用户无法进行其他操作。

•服务性能导出的时候,任务比较耗时就会阻塞主线程。

如果导出的服务是暴露给外部(前后端分离),这种大量的数据传输十分消耗性能。

解决方案使用异常处理导出请求,后台 MQ 通知自己进行处理。

MQ 消费之后,多线程处理 excel 文件导出,生成文件后上传到 FTP 等文件服务器。

前端直接查询并且展现对应的任务执行列表,去FTP 等文件服务器下载文件即可。

EXCEL 导出需要考虑的问题OOM正常的 poi 在处理比较大的 excel 的时候,会出现内存溢出。

网上的解决方案也比较多。

比如官方的SXSSF (Since POI 3.8 beta3)解决方式。

或者使用封装好的包1.easypoi ExcelBatchExportServer2.hutool BigExcelWriter原理都是强制使用 xssf 版本的Excel。

你也可以使用easyexcel,当然这个注释文档有些欠缺,而且设计的比较复杂,不是很推荐。

我这里使用的是hutool BigExcelWriter,懒得自己再写一遍。

FULL GC如果一次查询100W 条数据库,然后把这些信息全部加载到内存中,是不可取的。

建议有2个:1.限制每一次分页的数量。

比如一次最多查询 1w 条。

分成 100 次查询。

(必须)2.限制查询得总条数。

比如限制为最多 10W 条。

(根据实际情况选择)虽然使用者提出要导出类似于 3 个月的所有信息,但是数量太多,毫无意义。

(提出者自己可能体会不到)尽量避免 FULL-GC 的情况发生,因为目前的所有方式对于 excel 的输出流都会占用内存,100W 条很容易导致 FULL-GC。

JAVA导出EXCEL类(TSV格式)

JAVA导出EXCEL类(TSV格式)

package com.bear.util;import java.io.*;import javax.swing.*;import javax.swing.table.*;public class ExcelUtil {public void exportTable(JTable table,String title) throws IOException {TableModel model = table.getModel();JFileChooser fileChooser = new JFileChooser();fileChooser.setCurrentDirectory(new File("."));//设置当前目录fileChooser.setAcceptAllFileFilterUsed(false);fileChooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {public boolean accept(File file) {if (file.isDirectory())return true;return (file.getName().indexOf("xls") != -1);}public String getDescription() {return "Microsoft Excel文件(*.xls)";}});//fileChooser.showSaveDialog(null);int returnVal =fileChooser.showSaveDialog(fileChooser);if (returnVal == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();if (file.exists()) {int copy = JOptionPane.showConfirmDialog(null,"是否要覆盖当前文件?", "保存", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (copy == JOptionPane.YES_OPTION)fileChooser.approveSelection();elsereturn;}elsefileChooser.approveSelection();FileWriter out = new FileWriter(file);out.write(title + "\n\n");for(int i=0; i < model.getColumnCount(); i++)out.write(model.getColumnName(i) + "\t");out.write("\n");for(int i=0; i< model.getRowCount(); i++) {for(int j=0; j < model.getColumnCount(); j++) {out.write(model.getValueAt(i,j).toString()+"\t");}out.write("\n");}out.close();JOptionPane.showMessageDialog(null, "EXCEL文件导出成功!","成功",RMATION_MESSAGE);}}}。

javaexcel导入导出原理

javaexcel导入导出原理

javaexcel导入导出原理Java中实现Excel导入和导出的原理主要基于Apache POI库。

Apache POI是一个Java库,用于读取和写入Microsoft Office格式的文件,其中包括Excel。

它提供了一组API,可以操作Excel文件的内容、样式和格式。

导入Excel的原理如下:1. 使用Java的FileInputStream类读取Excel文件。

该类用于从磁盘中读取文件的字节流。

2. 创建一个工作簿对象(Workbook),该对象将表示整个Excel文件。

可以根据Excel文件的类型(.xls或.xlsx)选择HSSFWorkbook或XSSFWorkbook类来创建工作簿。

3. 获取工作簿中的工作表对象(Sheet),可以通过名称或索引获取。

工作表是Excel文件中的数据存储单元。

4. 遍历工作表中的每一行。

可以使用getRow方法获取行对象。

5. 遍历每一行中的单元格。

可以使用getCell方法获取单元格对象。

6. 根据单元格的数据类型,使用不同的方法获取单元格的值。

例如,数字类型使用getNumericCellValue方法,字符串类型使用getStringCellValue方法,日期类型使用getDateCellValue方法,布尔类型使用getBooleanCellValue方法。

7. 将获取到的单元格数据保存到Java对象中,或执行其他逻辑操作。

导出Excel的原理如下:1. 创建一个工作簿对象(Workbook),例如HSSFWorkbook或XSSFWorkbook。

2. 创建一个工作表对象(Sheet)。

3. 创建行对象(Row)并设置行索引。

4. 创建单元格对象(Cell)并设置单元格的值。

5.可以为单元格设置其他属性,如样式、格式和数据类型。

6.将行对象添加到工作表对象中。

7.将工作表对象添加到工作簿对象中。

8. 使用Java的FileOutputStream类将工作簿写入磁盘中的Excel文件。

java 导出excel数据的方法

java 导出excel数据的方法

java 导出excel数据的方法主题:Java 导出Excel 数据的方法引言:在开发Java应用程序时,经常需要将数据导出到Excel文件中。

Excel是一种常用的电子表格工具,可以对数据进行分析和可视化展示。

本文将介绍如何使用Java来导出Excel数据,以及实现这一功能的详细步骤。

1. 导入所需库首先,我们需要在Java项目中导入所需的库。

常用的库包括Apache POI和Apache POI-OOXML。

这些库提供了用于操作Excel 文件的类和方法。

2. 创建工作簿和工作表在Java中,我们通过HSSFWorkbook类创建一个新的Excel 工作簿。

然后,使用createSheet方法创建一个新的工作表对象。

我们可以为工作表指定名称,并将其附加到工作簿中。

3. 创建表头在工作表中,我们可以使用createRow方法创建一个新的行对象。

然后,使用createCell方法在行中创建单元格对象。

通过设置单元格的值,可以定义表头的内容。

4. 导出数据接下来,我们可以使用循环遍历数据集,并将数据写入Excel文件中。

每个数据项都可以被写入单元格对象中。

可以根据需要设置单元格的格式和样式。

5. 保存文件当所有数据都被写入Excel文件后,我们可以使用FileOutputStream类将工作簿中的数据保存到硬盘上的某个位置。

通过指定文件路径和文件名,可以将Excel文件保存在所需的位置。

6. 完整代码示例javaimport ermodel.HSSFWorkbook;import ermodel.*;import java.io.FileOutputStream;import java.util.List;public class ExcelExporter {public static void export(List<DataObject> data, String filePath) {try {Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet 1");创建表头Row headerRow = sheet.createRow(0);Cell cell = headerRow.createCell(0);cell.setCellValue("Column 1");cell = headerRow.createCell(1);cell.setCellValue("Column 2");...导出数据int rowNum = 1;for (DataObject obj : data) {Row row = sheet.createRow(rowNum++);cell = row.createCell(0);cell.setCellValue(obj.getField1());cell = row.createCell(1);cell.setCellValue(obj.getField2());...}保存文件FileOutputStream fileOut = new FileOutputStream(filePath);workbook.write(fileOut);fileOut.close();System.out.println("Excel文件导出成功!");} catch (Exception e) {e.printStackTrace();}}}示例中,我们通过export方法将一个包含数据对象的列表导出到Excel文件中。

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导出excel工具类

Java导出excel工具类

Java导出excel工具类web开发中,一个系统的普通需求也包括导出excel,一般采用POI做统计报表导出excel。

导出excel工具类:import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.List;import java.util.Map;import ermodel.HSSFCell;import ermodel.HSSFRichTextString;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;public class ExportExcel {private ExportExcel() {super();}public static void exportExcel(List<Object> list, Map<Integer, Long> map,String[] titles) throws IOException {// 创建Excel文档HSSFWorkbook hwb = new HSSFWorkbook();// sheet 对应一个工作页HSSFSheet sheet = hwb.createSheet("exportReport");int colNum = titles.length;// 创建第一行HSSFRow firstrow = sheet.createRow(0);HSSFCell[] firstcell = new HSSFCell[colNum];for (int col = 0; col < colNum; col++) {firstcell[col] = firstrow.createCell(col);firstcell[col].setCellValue(newHSSFRichTextString(titles[col]));}// 插入记录int rowNum = map.size();for (int i = 0; i < rowNum; i++) {// 从第二行开始HSSFRow row = sheet.createRow(i + 1);// 插入list中的字段for (int col = 0; col < colNum - 2; col++) {HSSFCell cell = row.createCell(col);cell.setCellValue(list.get(col).toString());}// 插入月份或日期row.createCell(colNum - 2).setCellValue(i + 1);// 插入总量row.createCell(colNum - 1).setCellValue(map.get(i + 1));}String fileName = titles[1].substring(0, 2);if (colNum == 4) {fileName += list.get(0) + "_" + list.get(1) + "年_年度报表";} else if (colNum == 5) {fileName += list.get(0) + "_" + list.get(1) + "年" +list.get(2)+ "月_月度报表";}// 创建文件输出流,准备输出电子表格OutputStream out = newFileOutputStream("../webapps/UsedMallMinaServer/files/" + fileName + ".xls");hwb.write(out);out.close();}}。

java导出Excel文件的步骤全纪录

java导出Excel文件的步骤全纪录

java导出Excel⽂件的步骤全纪录⼀、背景当前B/S模式已成为应⽤开发的主流,⽽在企业办公系统中,常常有客户这样⼦要求:你要把我们的报表直接⽤Excel打开(电信系统、银⾏系统)。

或者是:我们已经习惯⽤Excel打印。

这样在我们实际的开发中,很多时候需要实现导⼊、导出Excel的应⽤。

最近在java上做了⼀个EXCEL的导出功能,写了⼀个通⽤类,在这⾥分享分享,该类⽀持多sheet,且⽆需⼿动进⾏复杂的类型转换,只需提供三个参数即可:1、fileNameexcel⽂件名2、HasMap<String,List<?>> data具体的数据,每个List代表⼀张表的数据,?表⽰可为任意的⾃定义对象3、LinkedHashMap<String,String[][]> headersStirng代表sheet名。

每个String[][]代表⼀个sheet的定义,举个例⼦如下:String[][] header = {{"field1","参数1"},{"field2","参数2"},{"field3","参数3"}}其中的field1,field2,field3为对象中的属性名,参数1,参数2,参数3为列名,实际上这个指定了列的名称和这个列⽤到数据对象的哪个属性。

⼆、怎么⽤以⼀个例⼦来说明怎么⽤,假设有两个类A和B定义如下:public class A{private String name;private String address;}public class B{private int id;private double sum;private String cat;}现在我们通过查询数据库获得了A和B的两个列表:List<A> dataA = .....;List<B> dataB = .....;我们将这两个导出到excel中,⾸先需要定义sheet:String[][] sheetA = {{"name","姓名"},{"address","住址"}}String[][] sheetB = {{"id","ID"},{"sum","余额"},{"cat","猫的名字"}}然后将数据汇总构造⼀个ExcelUtil:String fileName = "测试Excel";HashMap<String,List<?>> data = new HashMap<>();//ASheet为表名,后⾯headers⾥的key要跟这⾥⼀致data.put("ASheet",dataA);data.put("BSheet",dataB);LinkedHashMap<String,String[][]> headers = new LinkedHashMap<>();headers.put("ASheet",sheetA);headers.put("BSheet",sheetB);ExcelUtil excelUtil = new ExcelUtil(fileName,data,headers);//获取表格对象HSSFWorkbook workbook = excelUtil.createExcel();//这⾥内置了⼀个写到response的⽅法(判断浏览器类型设置合适的参数),如果想写到⽂件也是类似的workbook.writeToResponse(workbook,request,response);当然通常数据是通过数据库查询的,这⾥为了演⽰⽅便没有从数据库查找。

java后台导出excel代码详细讲解

java后台导出excel代码详细讲解

java后台导出excel代码详细讲解1:引⼊相关依赖,我⽤的是grodle,你们也可以去maven仓库找⼀下poi这个jarcompile group: 'org.apache.poi', name: 'poi', version: '3.17'2:写⼊后台代码,我⽤的是springmvc框架,其实这个都是⽆所谓的,代码简单明了,复制下来就可以拿去⽤,我也不做太多的介绍了,有什么不懂的可以看下注释/**** @return* @name 导出数据*/@GetMapping("exportHttp")public String daoChu(HttpServletResponse response){List<WorkEntity> list = workService.selectAll();// 创建excelHSSFWorkbook wk = new HSSFWorkbook();// 创建⼀张⼯作表HSSFSheet sheet = wk.createSheet();// 2sheet.setColumnWidth(0, 5000);HSSFRow row = sheet.createRow(0);// 创建第⼀⾏的第⼀个单元格// 想单元格写值HSSFCell cell = row.createCell((short) 0);cell.setCellValue("序号");cell = row.createCell((short)1);cell.setCellValue("职位");cell = row.createCell((short)2);cell.setCellValue("早上上班时间");cell = row.createCell((short)3);cell.setCellValue("早上下班时间 ");cell = row.createCell((short)4);cell.setCellValue("下午上班时间");cell = row.createCell((short)5);cell.setCellValue("下午上班时间 ");// 创建第⼀⾏for (short i=0;i<list.size();i++){row = sheet.createRow(i+1);row.createCell(0).setCellValue(list.get(i).getWorkId());row.createCell(1).setCellValue(list.get(i).getPositionName());row.createCell(2).setCellValue(list.get(i).getAMendDate());row.createCell(3).setCellValue(list.get(i).getAMstartDate());row.createCell(4).setCellValue(list.get(i).getPMendDate());row.createCell(5).setCellValue(list.get(i).getPMstartDate());}try {/*** 弹出下载选择路径框*/response.setContentType("application/octet-stream");response.setHeader("Content-disposition", "attachment;filename=Opinion.xls");//默认Excel名称response.flushBuffer();wk.write(response.getOutputStream());wk.write(new FileOutputStream(new File("D://daochu/a.xls")));wk.close();} catch (IOException e) {e.printStackTrace();}finally {}return "null";}3:在jsp页码触发这个⽅法就可以了<input type="button" value="导出" class="ui_input_btn01" id="daochule" /><script>$(function () {$("#daochule").click(function () {window.location.href="exportHttp";})})</script>>我jsp这样写写的有点⿇烦你们也可以直接把button换成a标签直接href="exportHttp" 这样就可以了这个就是java后台导出到cxcel 有什么不懂的可以留⾔偶!!。

java 导出 freemarker excel 集合实例-概述说明以及解释

java 导出 freemarker excel 集合实例-概述说明以及解释

java 导出freemarker excel 集合实例-概述说明以及解释1.引言文章1.1 概述部分的内容可以写作如下:Java是一种广泛使用的编程语言,而Excel作为一种常用的办公软件,经常使用于数据分析和报表生成等领域。

在实际开发中,我们经常需要将Java中的数据导出到Excel中进行展示或者进一步处理。

然而,Java自身并没有提供直接将数据导出为Excel的功能。

为了实现这个需求,我们可以借助第三方库Freemarker来进行Excel的导出。

Freemarker是一款模板引擎,它可以将Java中的数据与预先定义好的Excel模板文件进行结合,生成最终的Excel报表。

本文将介绍如何使用Java和Freemarker来实现Excel的导出功能。

首先,我们将探讨Java导出Excel的需求,了解在实际项目中我们可能会遇到的问题和要求。

接下来,我们将详细介绍如何使用Freemarker来实现Excel导出功能,并提供一些实例代码供读者参考。

通过本文的学习,读者将能够掌握使用Java和Freemarker导出Excel 的基本原理和方法,为以后类似需求的项目开发提供参考。

同时,我们也将对导出功能的局限性进行讨论,并展望未来可能的改进方向。

接下来,我们将开始探讨Java导出Excel的需求。

文章结构部分的内容:文章结构是指文章的组织架构和章节分布,它的设计直接影响读者对文章内容的理解和阅读体验。

本文将按照以下方式组织结构和分布各章节内容:1. 引言部分:1.1 概述:介绍本文主题以及所讨论的问题的背景和重要性。

说明Java导出FreeMarker Excel集合实例的意义和应用场景。

1.2 文章结构:本章节。

详细说明文章的整体框架和组织结构,以便读者能清晰地了解文章的逻辑和内容安排。

1.3 目的:明确本文的目标和目的,阐述我们要达到的效果和希望读者能够得到的收获。

2. 正文部分:2.1 Java导出Excel的需求:解释为什么我们需要在Java中进行Excel导出操作,列举一些具体的应用场景和需求案例。

Java实现导出Excel功能

Java实现导出Excel功能

Java实现导出Excel功能⽂章参考《Qt5开发及实例(第4版)》陆⽂周主编⼀、建⽴Qt⼯程1、选择类别2、建⽴项⽬名称3、选择Qt基类及修改名称4、选择编译器(这边两个都选择,⽣成两个Debug⽂件)5、选择运⾏环境,⽣成⽂件夹⽣成的项⽬⽂件夹6、将预先编译好的OpenCV4.5下路径F:\OpenCV4.5.0\opencv\buildmingw\install 64\mingw\bin下所有⽂件复制到Qt 上⾯两个⽂件夹内7、在项⽬的.pro⽂件中添加语句INCLUDEPATH += F:\OpenCV4.5.0\opencv\buildmingw\install\includeCONFIG(debug, debug|release): {LIBS += F:\OpenCV4.5.0\opencv\buildmingw\install 64\mingw\bin\libopencv_*d.dll} else:CONFIG(release, debug|release): {LIBS += -LF:\OpenCV4.5.0\opencv\buildmingw\install 64\mingw\bin\-llibopencv_core450 \-llibopencv_highgui450 \-llibopencv_imgcodecs450 \ -llibopencv_imgproc450 \ -llibopencv_features2d450 \ -llibopencv_calib3d450}完成项⽬配置⼆、界⾯设计1、界⾯及属性设置属性设置序号名称类型属性设置①viewLabelQLabel frameShape:Box frameShadow:Sunken ②contrastVerticalSlider QSlidermaximum:100value:33 tickPostion:TicksBelow ③brightnessVerticalSlider QSlidermaximum:100④contrastLabelQLabeltext:对⽐度brightLabelQLabeltext:亮度2、在头⽂件中声明变量及设置公有函数,并⽣成对应定义函数3、完成各公有函数功能代码/**********************界⾯初始化**************************/void PictureEnhance::initMainWindow(){QString imgPath = "D:\\Qt\\QtOpencvEnhance\\lena.jpg"; //本地路径(图⽚直接放在项⽬⽬录下) Mat imgData = imread(imgPath.toLatin1().data()); //读取图⽚数据cvtColor(imgData,imgData, COLOR_BGR2RGB); //图⽚格式转换myImg = imgData;myQImg = QImage((const unsigned char*)(imgData.data), imgData.cols, imgData.rows, QImage::Format_RGB888); imgShow();}/**********************处理图⽚*****************************/void PictureEnhance::imgProc(float con, int bri){Mat imgSrc = myImg;Mat imgDst = Mat::zeros(imgSrc.size(),imgSrc.type()); //初始⽣成空的零像素阵列imgSrc.convertTo(imgDst,-1,con,bri);myQImg = QImage((const unsigned char*)(imgDst.data), imgDst.cols,imgDst.rows, QImage::Format_RGB888);imgShow();}/**********************显⽰图⽚******************************/void PictureEnhance::imgShow(){ui->ViewLabel->setPixmap(QPixmap::fromImage(myQImg.scaled(ui->ViewLabel->size(),Qt::KeepAspectRatio)));ui->ViewLabel->setScaledContents(true);}4、滑动条实现功能转到uil设置界⾯,右键对⽐度滑动条,转到槽完成槽函数/***********************对⽐度滑动条拖动槽*********************************/void PictureEnhance::on_contrastVerticalSlider_sliderMoved(int position){imgProc(position / 33.3,0);}/***********************对⽐度滑动条值改变槽***************************/void PictureEnhance::on_contrastVerticalSlider_valueChanged(int value){imgProc(value / 33.3,0);}/****************************亮度滑动条拖动槽*****************************/void PictureEnhance::on_brightnessVerticalSlider_sliderMoved(int position){imgProc(1.0,position);}/**************************亮度滑动条值改变槽************************/void PictureEnhance::on_brightnessVerticalSlider_valueChanged(int value){imgProc(1.0,value);}运⾏效果:到此这篇关于Qt5.14 与 OpenCV4.5 教程之图⽚增强的⽂章就介绍到这了,更多相关Qt5.14 与 OpenCV4.5图⽚增强内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

java实现导出Excel的功能

java实现导出Excel的功能

java实现导出Excel的功能导出excel是咱Java开发的必备技能啦,之前项⽬有这个功能,现在将其独⽴出来,分享⼀下。

所⽤技术就是SpringBoot,然后是MVC架构模式。

废话不多说,直接上代码了,源码点末尾链接就可以下载。

(2)修改pom⽂件,添加依赖;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 导出excel --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version></dependency><!-- https:///artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.14</version></dependency><!-- https:///artifact/org.apache.poi/poi-contrib --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-contrib</artifactId><version>3.6</version></dependency><!-- https:///artifact/org.apache.poi/poi-ooxml-schemas --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.17</version></dependency><!-- https:///artifact/org.apache.poi/poi-scratchpad --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency>(3)新建⼀个实体类,命名为User.java;package com.twf.springcloud.ExportExcel.po;import java.io.Serializable;public class User implements Serializable{private static final long serialVersionUID = -9180229310895087286L;private String name; // 姓名private String sex; // 性别private Integer age; // 年龄private String phoneNo; // ⼿机号private String address; // 地址private String hobby; // 爱好public User(String name, String sex, Integer age, String phoneNo, String address, String hobby) {super(); = name;this.sex = sex;this.age = age;this.phoneNo = phoneNo;this.address = address;this.hobby = hobby;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getPhoneNo() {return phoneNo;}public void setPhoneNo(String phoneNo) {this.phoneNo = phoneNo;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}@Overridepublic String toString() {return "User [name=" + name + ", sex=" + sex + ", age=" + age + ", phoneNo=" + phoneNo + ", address=" + address + ", hobby=" + hobby + "]";}}(4)新建⼀个excel样式⼯具类;package com.twf.springcloud.ExportExcel.utils;import ermodel.HSSFCellStyle;import ermodel.HSSFFont;import ermodel.HSSFWorkbook;import org.apache.poi.hssf.util.HSSFColor;import ermodel.CellStyle;import ermodel.Font;import org.apache.poi.xssf.streaming.SXSSFCell;import org.apache.poi.xssf.streaming.SXSSFRow;import org.apache.poi.xssf.streaming.SXSSFSheet;import org.apache.poi.xssf.streaming.SXSSFWorkbook;/*** excle样式⼯具类*/public class ExcelFormatUtil {/*** 设置报表头样式* @param workbook* @return*/public static CellStyle headSytle(SXSSFWorkbook workbook){// 设置style1的样式,此样式运⽤在第⼆⾏CellStyle style1 = workbook.createCellStyle();// cell样式// 设置单元格背景⾊,设置单元格背景⾊以下两句必须同时设置style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// 设置填充样式style1.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);// 设置填充⾊// 设置单元格上、下、左、右的边框线style1.setBorderBottom(HSSFCellStyle.BORDER_THIN);style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);style1.setBorderRight(HSSFCellStyle.BORDER_THIN);style1.setBorderTop(HSSFCellStyle.BORDER_THIN);Font font1 = workbook.createFont();// 创建⼀个字体对象font1.setBoldweight((short) 10);// 设置字体的宽度font1.setFontHeightInPoints((short) 10);// 设置字体的⾼度font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 粗体显⽰style1.setFont(font1);// 设置style1的字体style1.setWrapText(true);// 设置⾃动换⾏style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 设置单元格字体显⽰居中(左右⽅向)style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 设置单元格字体显⽰居中(上下⽅向)return style1;}/*** 设置报表体样式* @param wb* @return*/public static CellStyle contentStyle(SXSSFWorkbook wb){// 设置style1的样式,此样式运⽤在第⼆⾏CellStyle style1 = wb.createCellStyle();// cell样式// 设置单元格上、下、左、右的边框线style1.setBorderBottom(HSSFCellStyle.BORDER_THIN);style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);style1.setBorderRight(HSSFCellStyle.BORDER_THIN);style1.setBorderTop(HSSFCellStyle.BORDER_THIN);style1.setWrapText(true);// 设置⾃动换⾏style1.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 设置单元格字体显⽰居中(左右⽅向)style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 设置单元格字体显⽰居中(上下⽅向)return style1;}/*** 设置报表标题样式* @param workbook* @return*/public static HSSFCellStyle titleSytle(HSSFWorkbook workbook,short color,short fontSize){// 设置style1的样式,此样式运⽤在第⼆⾏HSSFCellStyle style1 = workbook.createCellStyle();// cell样式// 设置单元格背景⾊,设置单元格背景⾊以下两句必须同时设置//style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// 设置填充样式//short fcolor = color;if(color != HSSFColor.WHITE.index){style1.setFillForegroundColor(color);// 设置填充⾊}// 设置单元格上、下、左、右的边框线style1.setBorderBottom(HSSFCellStyle.BORDER_THIN);style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);style1.setBorderRight(HSSFCellStyle.BORDER_THIN);style1.setBorderTop(HSSFCellStyle.BORDER_THIN);HSSFFont font1 = workbook.createFont();// 创建⼀个字体对象font1.setBoldweight(fontSize);// 设置字体的宽度font1.setFontHeightInPoints(fontSize);// 设置字体的⾼度font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 粗体显⽰style1.setFont(font1);// 设置style1的字体style1.setWrapText(true);// 设置⾃动换⾏style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 设置单元格字体显⽰居中(左右⽅向)style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 设置单元格字体显⽰居中(上下⽅向) return style1;}/***设置表头* @param sheet*/public static void initTitleEX(SXSSFSheet sheet, CellStyle header,String title[],int titleLength[]) {SXSSFRow row0 = sheet.createRow(0);row0.setHeight((short) 800);for(int j = 0;j<title.length; j++) {SXSSFCell cell = row0.createCell(j);//设置每⼀列的字段名cell.setCellValue(title[j]);cell.setCellStyle(header);sheet.setColumnWidth(j, titleLength[j]);}}}(5)新建⼀个Service接⼝;package com.twf.springcloud.ExportExcel.sevice;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.http.ResponseEntity;public interface ExportService {ResponseEntity<byte[]> exportExcel(HttpServletRequest request, HttpServletResponse response);}(6)新建⼀个Service接⼝实现类;package com.twf.springcloud.ExportExcel.sevice.impl;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ermodel.CellStyle;import org.apache.poi.xssf.streaming.SXSSFCell;import org.apache.poi.xssf.streaming.SXSSFRow;import org.apache.poi.xssf.streaming.SXSSFSheet;import org.apache.poi.xssf.streaming.SXSSFWorkbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Service;import com.twf.springcloud.ExportExcel.controller.BaseFrontController;import er;import com.twf.springcloud.ExportExcel.sevice.ExportService;import com.twf.springcloud.ExportExcel.utils.ExcelFormatUtil;@Servicepublic class ExportServiceImpl implements ExportService{Logger logger = LoggerFactory.getLogger(ExportServiceImpl.class);@Overridepublic ResponseEntity<byte[]> exportExcel(HttpServletRequest request, HttpServletResponse response) { try {(">>>>>>>>>>开始导出excel>>>>>>>>>>");// 造⼏条数据List<User> list = new ArrayList<>();list.add(new User("唐三藏", "男", 30, "134********", "东⼟⼤唐", "取西经"));list.add(new User("孙悟空", "男", 29, "134********", "菩提院", "打妖怪"));list.add(new User("猪⼋戒", "男", 28, "134********", "⾼⽼庄", "偷懒"));list.add(new User("沙悟净", "男", 27, "134********", "流沙河", "挑担⼦"));BaseFrontController baseFrontController = new BaseFrontController();return baseFrontController.buildResponseEntity(export((List<User>) list), "⽤户表.xls"); } catch (Exception e) {e.printStackTrace();logger.error(">>>>>>>>>>导出excel 异常,原因为:" + e.getMessage());}return null;}private InputStream export(List<User> list) {(">>>>>>>>>>>>>>>>>>>>开始进⼊导出⽅法>>>>>>>>>>");ByteArrayOutputStream output = null;InputStream inputStream1 = null;SXSSFWorkbook wb = new SXSSFWorkbook(1000);// 保留1000条数据在内存中SXSSFSheet sheet = wb.createSheet();// 设置报表头样式CellStyle header = ExcelFormatUtil.headSytle(wb);// cell样式CellStyle content = ExcelFormatUtil.contentStyle(wb);// 报表体样式// 每⼀列字段名String[] strs = new String[] { "姓名", "性别", "年龄", "⼿机号", "地址","爱好" };// 字段名所在表格的宽度int[] ints = new int[] { 5000, 5000, 5000, 5000, 5000, 5000 };// 设置表头样式ExcelFormatUtil.initTitleEX(sheet, header, strs, ints);(">>>>>>>>>>>>>>>>>>>>表头样式设置完成>>>>>>>>>>");if (list != null && list.size() > 0) {(">>>>>>>>>>>>>>>>>>>>开始遍历数据组装单元格内容>>>>>>>>>>"); for (int i = 0; i < list.size(); i++) {User user = list.get(i);SXSSFRow row = sheet.createRow(i + 1);int j = 0;SXSSFCell cell = row.createCell(j++);cell.setCellValue(user.getName()); // 姓名cell.setCellStyle(content);cell = row.createCell(j++);cell.setCellValue(user.getSex()); // 性别cell.setCellStyle(content);cell = row.createCell(j++);cell.setCellValue(user.getAge()); // 年龄cell.setCellStyle(content);cell = row.createCell(j++);cell.setCellValue(user.getPhoneNo()); // ⼿机号cell.setCellStyle(content);cell = row.createCell(j++);cell.setCellValue(user.getAddress()); // 地址cell.setCellStyle(content);cell = row.createCell(j++);cell.setCellValue(user.getHobby()); // 爱好cell.setCellStyle(content);}(">>>>>>>>>>>>>>>>>>>>结束遍历数据组装单元格内容>>>>>>>>>>"); }try {output = new ByteArrayOutputStream();wb.write(output);inputStream1 = new ByteArrayInputStream(output.toByteArray());output.flush();} catch (Exception e) {e.printStackTrace();} finally {try {if (output != null) {output.close();if (inputStream1 != null)inputStream1.close();}} catch (IOException e) {e.printStackTrace();}}return inputStream1;}}(7)新建⼀个下载⽂件的通⽤controller;package com.twf.springcloud.ExportExcel.controller;import java.io.InputStream;import .URLEncoder;import java.util.HashMap;import java.util.Map;import org.apache.poi.util.IOUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.util.StringUtils;import org.springframework.validation.annotation.Validated;@Validatedpublic class BaseFrontController {/*** slf4j ⽇志 logger*/protected final Logger logger = LoggerFactory.getLogger(this.getClass());/*** 下载⽂件,纯SpringMVC的API来完成** @param is ⽂件输⼊流* @param name ⽂件名称,带后缀名** @throws Exception*/public ResponseEntity<byte[]> buildResponseEntity(InputStream is, String name) throws Exception {(">>>>>>>>>>>>>>>>>>>>开始下载⽂件>>>>>>>>>>");if (this.logger.isDebugEnabled())this.logger.debug("download: " + name);HttpHeaders header = new HttpHeaders();String fileSuffix = name.substring(stIndexOf('.') + 1);fileSuffix = fileSuffix.toLowerCase();Map<String, String> arguments = new HashMap<String, String>();arguments.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");arguments.put("xls", "application/vnd.ms-excel");String contentType = arguments.get(fileSuffix);header.add("Content-Type", (StringUtils.hasText(contentType) ? contentType : "application/x-download"));if(is!=null && is.available()!=0){header.add("Content-Length", String.valueOf(is.available()));header.add("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(name, "UTF-8")); byte[] bs = IOUtils.toByteArray(is);(">>>>>>>>>>>>>>>>>>>>结束下载⽂件-有记录>>>>>>>>>>");(">>>>>>>>>>结束导出excel>>>>>>>>>>");return new ResponseEntity<>(bs, header, HttpStatus.OK);}else{String string="数据为空";header.add("Content-Length", "0");header.add("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(name, "UTF-8")); (">>>>>>>>>>>>>>>>>>>>结束下载⽂件-⽆记录>>>>>>>>>>");(">>>>>>>>>>结束导出excel>>>>>>>>>>");return new ResponseEntity<>(string.getBytes(), header, HttpStatus.OK);}}}(8)新建⼀个controller,作为请求的⼊⼝;package com.twf.springcloud.ExportExcel.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.twf.springcloud.ExportExcel.sevice.ExportService;@RestController@RequestMapping("/exportExcel/")public class ExportController {@Autowiredprivate ExportService exportService;// 导出excel@RequestMapping("exportExcel")public ResponseEntity<byte[]> exportExcel(HttpServletRequest request, HttpServletResponse response) {return exportService.exportExcel(request,response);}}(10)以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Java数据导出功能之导出Excel文件实例

Java数据导出功能之导出Excel文件实例

Java数据导出功能之导出Excel⽂件实例在编程中经常需要使⽤到表格(报表)的处理主要以Excel表格为主。

下⾯给出⽤java写⼊数据到excel表格⽅法: 1.添加jar⽂件 2.jxl对Excel表格的认识 如下图是准备要建⽴的Excel⽂件t.xls。

坐标(列,⾏):⾓⾊(0,0),助教(0,3),功能描述(3,0),UC22(1,4)。

3.java代码根据程序中的数据⽣成上述图⽚所⽰的t.xls⽂件import java.io.File;import jxl.*;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class Writer_excel{public static void main(String[] args) {//标题⾏String title[]={"⾓⾊","编号","功能名称","功能描述"};//内容String context[][]={{"UC11","设置课程","创建课程"},{"UC12","设置学⽣名单","给出与课程关联的学⽣名单"},{"UC21","查看学⽣名单",""},{"UC22","查看⼩组信息","显⽰助教所负责的⼩组列表信息"}};//操作执⾏try {//t.xls为要新建的⽂件名WritableWorkbook book= Workbook.createWorkbook(new File("t.xls"));//⽣成名为“第⼀页”的⼯作表,参数0表⽰这是第⼀页WritableSheet sheet=book.createSheet("第⼀页",0);//写⼊内容for(int i=0;i<4;i++) //titlesheet.addCell(new Label(i,0,title[i]));for(int i=0;i<4;i++) //context{for(int j=0;j<3;j++){sheet.addCell(new Label(j+1,i+1,context[i][j]));}}sheet.addCell(new Label(0,1,"教师"));sheet.addCell(new Label(0,3,"助教"));/*合并单元格.合并既可以是横向的,也可以是纵向的*WritableSheet.mergeCells(int m,int n,int p,int q); 表⽰由(m,n)到(p,q)的单元格组成的矩形区域合并* */sheet.mergeCells(0,1,0,2);sheet.mergeCells(0,3,0,4);//写⼊数据book.write();//关闭⽂件book.close();}catch(Exception e) { }}}。

Java如何实现导出Excel功能,亲测有用!

Java如何实现导出Excel功能,亲测有用!

Java如何实现导出Excel功能,亲测有⽤!刚写了个导⼊Excel表格,现在来写个导出,其实形式都差不多,废话不多说,贴代码<div><button type="button" class="btn-btn" @click="exportData()">导出</button></div>这⾥根据个⼈需求,我这⾥写时间设置,根据条件去请求导出,这⾥因⼈⽽异exportData(){//判断⽤户有⽆填写操作类型if (this.type != "") {//默认全部操作类型,不传参this.param["code"] = this.code;}//判断⽤户有⽆填写开始⽇期if (this.startDate != '') {this.param['statrDate'] = new Date(this.startDate);}//判断⽤户有⽆填写结束⽇期if (this.endDate != '') {this.param['endDate'] = new Date(this.endDate);}this.param[this.optionSelected] = this.param.searchText;var url = "${ctx}/operatelog/exportOperateLog";window.open(url);}window.open(url);⼀开始请求我是使⽤ajax的,但是⼀直不弹出⽂件存放位置的选择,我怀疑是异步的问题,或者没设置好,后来使⽤这个语句,就会弹出⽂件存放位置的选择出来,没办法,实⼒有限,知道的可以留⾔告诉我下,谢谢!java中Controller层,来接受请求,数据库查询到的数据进⾏封装,然后使⽤ExcelUtils进⾏输出。

JAVA导出EXCEL表格

JAVA导出EXCEL表格

JAVA导出EXCEL表格hi~ 好久不见⼩伙伴们,最近⽐较忙,没什么时间写,今天给⼤家分享的是JAVA如何导出EXCEL表格,因为最近有做这样⼀个功能,所以分享出来,如有不对之处,敬请指正。

在许多企业办公系统中,经常会有⽤户要求,需要对数据进⾏统计并且可以直接下载Excel⽂件,这样⼦的话,既然客户提出了要求,我们就应该去满⾜吖,毕竟客户是上帝嘛,那么我们如何去实现呢?且看我为你⼀⼀道来。

POI简介:Jakarta POI 是⼀套⽤于访问微软格式⽂档的Java API。

Jakarta POI有很多组件组成,其中有⽤于操作Excel格式⽂件的HSSF和⽤于操作Word的HWPF,在各种组件中⽬前只有⽤于操作Excel的HSSF相对成熟。

官⽅主页,API⽂档现在⽤的⽐较多的都是⽤POI技术来导出或者导⼊Excel,所以我们就⽤POI吧,⽤POI导出Excel我们⾸先要下载所需的jar包然后导⼊到我们的项⽬中,⽤maven的同学只需找到相关依赖加⼊到pom.xml⾥⾯即可。

1. 下载jar包:官⽅下载:这⾥可以下载到它的最新版本和⽂档,⽬前最新版本是3.7,这⾥使⽤⽐较稳定的3.6版。

百度⽹盘下载:https:///s/1mjhoaWK 密码:pkur2. 将jar包加⼊到项⽬中:将下载好的jar包加⼊到WEBINFO⽬录下的lib⽂件夹中,Eclipse⽤户选中jar包然后右击选择Build Path选项, Idea⽤户选中jar包然后右击选择Add as Library选项即可。

如果是⽤maven的可⾃⾏到maven中央仓库搜索poi然后选择对应的版本即可,也可以直接将下⾯代码复制到pom.xml。

<!-- https:///artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.6</version></dependency>⼩提⽰:⽤maven引⼊依赖jar包的可能会遇到包引⽤不到的bug,但是maven依赖确实已经引⼊了,⽽且没有任何报错,但是只要⼀引⽤ermodel下⾯的类就会报错,报错内容为:Caused by: ng.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook。

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

package com.bear.util;
import java.io.*;
import javax.swing.*;
import javax.swing.table.*;
public class ExcelUtil {
public void exportTable(JTable table,String title) throws IOException {
TableModel model = table.getModel();
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new File("."));//设置当前目录
fileChooser.setAcceptAllFileFilterUsed(false);
fileChooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory())
return true;
return (file.getName().indexOf("xls") != -1);
}
public String getDescription() {
return "Microsoft Excel文件(*.xls)";
}
});
//fileChooser.showSaveDialog(null);
int returnVal =fileChooser.showSaveDialog(fileChooser);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (file.exists()) {
int copy = JOptionPane.showConfirmDialog(null,"是否要覆盖当前文件?", "保存", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if (copy == JOptionPane.YES_OPTION)
fileChooser.approveSelection();
else
return;
}
else
fileChooser.approveSelection();
FileWriter out = new FileWriter(file);
out.write(title + "\n\n");
for(int i=0; i < model.getColumnCount(); i++)
out.write(model.getColumnName(i) + "\t");
out.write("\n");
for(int i=0; i< model.getRowCount(); i++) {
for(int j=0; j < model.getColumnCount(); j++) {
out.write(model.getValueAt(i,j).toString()+"\t");
}
out.write("\n");
}
out.close();
JOptionPane.showMessageDialog(null, "EXCEL文件导出成功!","成功",RMATION_MESSAGE);
}
}
}。

相关文档
最新文档