尽管是转别人的(忘了哪转过来的了),但此处标为原创不是为了提高訪问量,也不是为了其它。仅仅是纯粹的认为有实际用途。希望能给很多其它有此需求的人看到并能帮到他们就足够了

所需jar包:jxl.jar

package cn.com.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;import jxl.Cell;
import jxl.Range;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;public class ExcelTransformHtml {/*** 获取Excel文件转换为HTML后的字符串,仅仅支持后缀为xls的Excel(主调方法)* @param sourcefile <span style="font-family: Arial, Helvetica, sans-serif;"> </span>Excel文件* @return 返回Excel转换后的HTML字符串* @throws Exception*/public static String getExcelInfo(File sourcefile) throws Exception {StringBuffer sb = new StringBuffer();InputStream is = new FileInputStream(sourcefile);Workbook rwb = Workbook.getWorkbook(is);Sheet sheet = rwb.getSheet(0);int colnum = sheet.getColumns();int rownum = sheet.getRows();Map<String, String> map[] = getRowSpanColSpanMap(sheet);sb.append("<table border='1' cellspacing='0'>");for (int row = 0; row < rownum; row++) {sb.append("<tr>");for (int col = 0; col < colnum; col++) {Cell cell = sheet.getCell(col, row);String content = cell.getContents();CellFormat cellFormat = cell.getCellFormat();if (map[0].containsKey(row + "," + col)) {String pointString = map[0].get(row + "," + col);map[0].remove(row + "," + col);int bottomeRow = Integer.valueOf(pointString.split(",")[0]);int bottomeCol = Integer.valueOf(pointString.split(",")[1]);int rowSpan = bottomeRow - row + 1;int colSpan = bottomeCol - col + 1;sb.append("<td rowspan= '" + rowSpan + "' colspan= '" + colSpan + "' ");} else if (map[1].containsKey(row + "," + col)) {map[1].remove(row + "," + col);continue;} else {sb.append("<td ");}if (cellFormat != null) {Alignment alignment = cellFormat.getAlignment();sb.append("align='" + convertToHtmlGrammer(alignment) + "' ");VerticalAlignment verticalAlignment = cellFormat.getVerticalAlignment();sb.append("valign='" + convertToHtmlGrammer(verticalAlignment) + "' ");// sb.append("style='color:" + convertToHtmlGrammer(cellFormat.getFont().getColour()) + ";");  //Colour bgcolour = cellFormat.getBackgroundColour();// sb.append("background-color:" + convertToHtmlGrammer(bgcolour) + ";");  //// Colour bottomColour = cellFormat.getBorderColour(Border.BOTTOM);  //// Colour leftColour = cellFormat.getBorderColour(Border.LEFT);// Colour rightColour = cellFormat.getBorderColour(Border.RIGHT);// Colour topColour = cellFormat.getBorderColour(Border.TOP);// System.out.print("bottomColour:" +// bottomColour.getDescription());// System.out.print(" leftColour:" +// leftColour.getDescription());// System.out.print(" rightColour:" +// rightColour.getDescription());// System.out.println(" topColour:" +// topColour.getDescription());// sb.append("border-color:" + convertToHtmlGrammer(bottomColour) + ";");  // sb.append("' ");}sb.append(">");if (content == null || "".equals(content.trim())) {sb.append("   ");} else {sb.append(content);}sb.append("</td>");}sb.append("</tr>");}sb.append("</table>");rwb.close();is.close();return sb.toString();}@SuppressWarnings("unchecked")private static Map<String, String>[] getRowSpanColSpanMap(Sheet sheet) {Map<String, String> map0 = new HashMap<String, String>();Map<String, String> map1 = new HashMap<String, String>();Range[] range = sheet.getMergedCells();for (int i = 0; i < range.length; i++) {Cell topCell = range[i].getTopLeft();Cell bottomCell = range[i].getBottomRight();int topRow = topCell.getRow();int topCol = topCell.getColumn();int bottomRow = bottomCell.getRow();int bottomCol = bottomCell.getColumn();map0.put(topRow + "," + topCol, bottomRow + "," + bottomCol);int tempRow = topRow;while (tempRow <= bottomRow) {int tempCol = topCol;while (tempCol <= bottomCol) {map1.put(tempRow + "," + tempCol, "");tempCol++;}tempRow++;}map1.remove(topRow + "," + topCol);}Map[] map = { map0, map1 };return map;}private static String convertToHtmlGrammer(Alignment alignment) {String align = "left";switch (alignment.getValue()) {case 1:align = "left";break;case 2:align = "center";break;case 3:align = "right";break;case 5:align = "justify";break;default:break;}return align;}private static String convertToHtmlGrammer(VerticalAlignment verticalAlignment) {String valign = "middle";switch (verticalAlignment.getValue()) {case 1:valign = "middle";break;case 2:valign = "bottom";break;case 3:valign = "top";break;default:break;}return valign;}/*private static String convertToHtmlGrammer(Colour colour) {StringBuffer sb = new StringBuffer("");if (colour != null && !"default background".equalsIgnoreCase(colour.getDescription())) {sb.append("#");sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getRed())));sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getGreen())));sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getBlue())));}return sb.toString();}*/private static String fillWithZero(String str) {if (str != null && str.length() < 2) {return "0" + str;}return str;}
}

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5204461.html,如需转载请自行联系原作者

Java-----Excel转HTML相关推荐

  1. sqlite java excel,Android将Excel表数据导入SQLite数据库

    前两天接了个私活,需求方给了一个Excel表格,需要使用到里面的7000+条数据进行查询,最开始以为7000条一条条加入数据库也还好,以下是其中一部分数据: 但当我添加了20多条的时候突然发现这样的方 ...

  2. JAVA EXCEL API详解

    2019独角兽企业重金招聘Python工程师标准>>> 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易 ...

  3. JAVA EXCEL API(jxl)简介

    Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该 API非 Windows操作系统也可以通过纯Ja ...

  4. java excel类库,jExcelApi Java 操作 Excel 的类库

    jExcelApi Java 操作 Excel 的类库 Java Excel API(JXL)是一个成熟,开源的用来操作Excel电子表格的Java类库,支持读取,修改,写入等操作.这个项目基于GPL ...

  5. java excel中删除两列_Java 插入、隐藏/显示、删除Excel行或列

    概述 操作Excel工作表时,对表格中的行或列数据可执行,包括插入.隐藏.显示.删除等在内的多种操作需求,本文将通过Java代码示例演示每种操作的具体实现方法.文中方法使用了Java Excel类库( ...

  6. java excel api及详细教程_针对Java Excel API及详细教程

    时在java开发中会操作excel表格,其实操作起来也特别简单.这里把前期操作步骤说一下,本文会简单的介绍一个开放源码项目:Java Excel Api,使用它大家就可以方便的操作Excel文件了. ...

  7. Java Excel合并工具 v1.0

    简介: Java Excel合并工具主要功能就是为用户提供将不同Excel表中的数据提取合并拼接到一起的辅助服务,功能比较简单,使用方法也很简单,具体的步骤小编在下文做了详细说明,需要的小伙伴可以按照 ...

  8. java excel odbc_Java:无法使用JDBC ODBC更新Excel

    我可以很好地读取行/列,但我无法更新,插入或删除. try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String myDB ...

  9. Java Excel(jxl)学习笔记

    概述 ​ Java Excel API是成熟的开源Java API,使开发人员可以动态读取,写入和修改Excel电子表格. 一些功能 从Excel 95.97.2000,XP和2003工作簿中读取数据 ...

  10. java excel api 下载文件_Java-Excel Java操作Excel POI(Jakarta POI API) - 下载 - 搜珍网

    Java操作Excel/Jakarta POI API/data/Jakarta POI API.doc Java操作Excel/Jakarta POI API/jar/poi-3.0.2-FINAL ...

最新文章

  1. 实例详解 DB2 排序监控和调优
  2. 开源 java CMS - FreeCMS2.5 标签 infoPage
  3. (转)C#开发微信门户及应用(5)--用户分组信息管理
  4. 删除Github仓库某一次commit信息/历史
  5. 199.二叉树的右视图
  6. Windows删除服务
  7. S7–1500遇上工业无线AP:一个立体仓库无线网络故障诊断分析案例
  8. HTML Canvas 刮刮卡抽奖效果的实现
  9. 基于高德地图实现Marker聚合效果
  10. 装逼神器--黑客帝国的实现效果(linux环境系统)
  11. 中国现代书画家——鞠宗霖
  12. python 安装spyder和问题
  13. 2_竞赛无人机基础飞行控制函数——零基础学习竞赛无人机搭积木式编程
  14. java计算机毕业设计基于安卓Android的社交app-社会交友app
  15. SpringBoot启动流程简要
  16. 比特币钱包开发:通过助记词扩展子地址的原理与编码
  17. android libev 编译,移植libev事件库到Android中
  18. Avos Cloud 的 ParseObject的创建与数据存储检索
  19. (三)Windows Server 2008 R2 无网卡驱动
  20. 海信电视使用优酷投屏的方法

热门文章

  1. 【COCOS2DX-LUA 脚本开发之一】LUA语言基础在COCOS2DX游戏中使用LUA脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!...
  2. LINQ系列:Linq to Object集合操作符
  3. plist中数据存取
  4. sql server 2000里ldf损坏,只有mdf的恢复
  5. netty mysql 中间件_阿里开源Mysql分布式中间件:Cobar
  6. Netfilter实现机制分析 原作者:Minit
  7. ubuntu下安装程序的三种方法
  8. 和foreach的区别和应用场景_介绍下Set、Map、WeakSet 和 WeakMap 的区别?
  9. 3814.矩阵变换-AcWing题库
  10. 双向链表与LinkedHashMap