tableToExcel工具类,此工具类指定格式的表格进行转Excel
格式:其中不能带有thead,tbody和th标签
表头1 | 表头2 | 表头3 | 表头4 |
数据1 | 数据2 | 数据3 | 数据4 |
数据1 | 数据2 | 数据3 | 数据4 |
工具类:
package com.zx.erjiqualitydata;import java.io.ByteArrayInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.util.CellRangeAddress;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.usermodel.Font;import org.apache.poi.ss.usermodel.IndexedColors;import org.apache.poi.ss.usermodel.Workbook;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;import org.springframework.util.ClassUtils;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;public class TableToExcel { /** * @author lusong * @param sheetName * @param html * @param headNum表头的行数 * @throws FileNotFoundException * zyn * 2012-12-21 下午1:44:02 */ public static String tableToExcel(String sheetName,String html,int headNum) throws FileNotFoundException{ HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(sheetName); CellStyle headStyle = createHeadStyle(wb); CellStyle bodyStyle = createBodyStyle(wb); HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); String filePath = request.getSession().getServletContext().getRealPath("/static/document"); String path = filePath+"\\"+sheetName+".xlsx"; FileOutputStream os = new FileOutputStream(path); SAXBuilder sb = new SAXBuilder(); try { ByteArrayInputStream is = new ByteArrayInputStream(html.getBytes("UTF-8")); Document document = sb.build(is); //获取table节点 Element root = document.getRootElement(); //获取tr的list ListtrList = root.getChildren("tr"); int[][] area = getCellArea(trList); //循环创建行 for(int i=0;i tdList = trList.get(i).getChildren("td"); //该行td的序号 int tdIndex = 0; for(int ii=0;ii trList){ //获取table单元格矩阵 Element headtr = trList.get(0); List headTdList = headtr.getChildren("td"); //每行的未经合并的单元格个数 int cols = 0; for(Element e:headTdList){ int colspan = Integer.valueOf(null==e.getAttributeValue("colspan")?"0":e.getAttributeValue("colspan")); if(colspan==0){ colspan =1; } cols += colspan; } //初始化单元格矩阵 int[][] area = new int[trList.size()][cols]; for(int i=0;i tdList = tr.getChildren("td"); //该行到ii个单元格为止被合并的单元格个数 int rowColspan = 0; for(int ii=0;ii 1?colspan:1; rowColspan += colspan-1; //单元格需要被横向合并声明为1 for(int m=1;m 1?rowspan:1; //单元格需要被纵向向合并声明为2 for(int m=1;m 1\")); String tableHtmlString = "
河北二院 三级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 三级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 公有制 河北省-石家庄市-裕华区 河北二院 三级医院 综合 公立 公有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 省三院 二级医院 综合 公立 公有制 河北省-石家庄市-长安区 "; //tableToExcel("缴费统计", " 省三院 二级医院 综合 公立 阿斯蒂芬 北京-北京市-东城区 ", 1); tableToExcel("缴费统计", "
河北二院 三级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 三级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 公有制 河北省-石家庄市-裕华区 河北二院 三级医院 综合 公立 公有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 省三院 二级医院 综合 公立 公有制 河北省-石家庄市-长安区 省三院 二级医院 综合 公立 阿斯蒂芬 北京-北京市-东城区 ", 1); } }
医疗机构名称 级别 类别 属性 所有制 所在地 河北二院 三级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 三级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 公有制 河北省-石家庄市-裕华区 河北二院 三级医院 综合 公立 公有制 河北省-石家庄市-裕华区 河北二院 二级医院 综合 公立 私有制 河北省-石家庄市-裕华区 省三院 二级医院 综合 公立 公有制 河北省-石家庄市-长安区 省三院 二级医院 综合 公立 阿斯蒂芬 北京-北京市-东城区