代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
读取excel(POI)【转换为html】
作者:
Dezai.CN
/ 发布于
2012/6/18
/
700
<div> package test; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFPalette; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; public class POIReadExcel { public static void main(String[] args){ try { POIReadExcel poire = new POIReadExcel(); String path = "D:\\test.xls"; File sourcefile = new File(path); InputStream is = new FileInputStream(sourcefile); POIFSFileSystem fs = new POIFSFileSystem( is ); HSSFWorkbook wb = new HSSFWorkbook(fs); System.out.println(poire.getExcelInfo(wb)); is.close(); } catch (Exception e) { e.printStackTrace(); } } public String getExcelInfo(HSSFWorkbook wb) throws Exception{ StringBuffer sb = new StringBuffer(); Sheet sheet = wb.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); Map<String,String> map[] = getRowSpanColSpanMap(sheet); sb.append("<table border='0' cellspacing='1' width='100%'>"); HSSFRow row = null; HSSFCell cell=null; //System.out.println(sheet.getPhysicalNumberOfRows()); for(int rowNum = sheet.getFirstRowNum(); rowNum < lastRowNum; rowNum ++) { row = (HSSFRow) sheet.getRow(rowNum); if(row == null){ sb.append("<tr><td > </td></tr>"); continue; } sb.append("<tr>"); int lastColNum = row.getLastCellNum(); for(int colNum = 0; colNum < lastColNum; colNum ++) { cell = row.getCell(colNum); if(cell == null){ sb.append("<td> </td>"); continue; } String stringValue = getCellValue(cell); if(map[0].containsKey(rowNum + "," + colNum)) { String pointString = map[0].get(rowNum + "," + colNum); map[0].remove(rowNum + "," + colNum); int bottomeRow = Integer.valueOf(pointString.split(",")[0]); int bottomeCol = Integer.valueOf(pointString.split(",")[1]); int rowSpan = bottomeRow - rowNum + 1; int colSpan = bottomeCol - colNum + 1; sb.append("<td rowspan= '" + rowSpan + "' colspan= '" + colSpan + "' " ); } else if(map[1].containsKey(rowNum + "," + colNum)){ map[1].remove(rowNum + "," + colNum); continue; } else { sb.append("<td "); } HSSFCellStyle cellStyle = cell.getCellStyle(); if(cellStyle != null){ short alignment = cellStyle.getAlignment(); sb.append("align='" + convertAlignToHtml(alignment) + "' "); short verticalAlignment = cellStyle.getVerticalAlignment(); sb.append("valign='" + convertVerticalAlignToHtml(verticalAlignment) +"' "); HSSFFont hf = cellStyle.getFont(wb); short boldWeight = hf.getBoldweight() ; short fontColor = hf.getColor(); sb.append("style='"); HSSFPalette palette = wb.getCustomPalette(); //类HSSFPalette用于求的颜色的国际标准形式 HSSFColor hc = palette.getColor(fontColor); sb.append("font-weight:" + boldWeight + ";"); //字体加粗 //System.out.println(hf.getFontHeight()); sb.append("font-size: " + hf.getFontHeight()/2 + "%;"); //字体大小 String fontColorStr = convertToStardColor(hc); if(fontColorStr != null && !"".equals(fontColorStr.trim())){ sb.append("color:" + fontColorStr + ";"); //字体颜色 } short bgColor = cellStyle.getFillForegroundColor(); hc = palette.getColor(bgColor); String bgColorStr = convertToStardColor(hc); if(bgColorStr != null && !"".equals(bgColorStr.trim())){ sb.append("background-color:" + bgColorStr + ";"); //背景颜色 } short borderColor = cellStyle.getBottomBorderColor() ; hc = palette.getColor(borderColor); String borderColorStr = convertToStardColor(hc); if(borderColorStr != null && !"".equals(borderColorStr.trim())){ sb.append("border-color:" + borderColorStr + ";"); //边框颜色 } // boolean borderBoolean = cellStyle.getWrapText(); // // if(borderBoolean){ // sb.append("border-style: inset;"); // } sb.append("' "); } sb.append(">"); if(stringValue == null || "".equals(stringValue.trim())){ sb.append(" "); }else{ //将ascii码为160的空格转换为html下的空格( ) sb.append(stringValue.replace(String.valueOf((char)160), " ")); } sb.append("</td>"); } sb.append("</tr>"); } sb.append("</table>"); return sb.toString(); } @SuppressWarnings("unchecked") private Map<String,String>[] getRowSpanColSpanMap(Sheet sheet){ Map<String,String> map0 = new HashMap<String,String>(); Map<String,String> map1 = new HashMap<String,String>(); int mergedNum = sheet.getNumMergedRegions(); CellRangeAddress range = null; for(int i = 0; i < mergedNum; i ++){ range = sheet.getMergedRegion(i); int topRow = range.getFirstRow(); int topCol = range.getFirstColumn(); int bottomRow = range.getLastRow(); int bottomCol = range.getLastColumn(); map0.put(topRow + "," + topCol, bottomRow + "," + bottomCol); //System.out.println(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 String convertAlignToHtml(short alignment){ String align = "left"; switch(alignment){ case HSSFCellStyle.ALIGN_LEFT: align = "left"; break; case HSSFCellStyle.ALIGN_CENTER: align = "center"; break; case HSSFCellStyle.ALIGN_RIGHT: align = "right"; break; default: break; } return align; } private String convertVerticalAlignToHtml(short verticalAlignment){ String valign = "middle"; switch(verticalAlignment){ case HSSFCellStyle.VERTICAL_BOTTOM: valign = "bottom"; break; case HSSFCellStyle.VERTICAL_CENTER: valign = "center"; break; case HSSFCellStyle.VERTICAL_TOP: valign = "top"; break; default: break; } return valign; } private String convertToStardColor(HSSFColor hc){ StringBuffer sb = new StringBuffer(""); if(hc != null){ if(HSSFColor.AUTOMATIC.index == hc.getIndex()){ return null; } sb.append("#"); for(int i = 0; i < hc.getTriplet().length; i ++){ sb.append(fillWithZero(Integer.toHexString(hc.getTriplet()[i]))) ; } } return sb.toString(); } private String fillWithZero(String str){ if(str != null && str.length() < 2){ return "0" + str; } return str; } private String getCellValue(HSSFCell cell){ switch(cell.getCellType()){ case HSSFCell.CELL_TYPE_NUMERIC: DecimalFormat format = new DecimalFormat("#0.##"); return format.format(cell.getNumericCellValue()); // return String.valueOf(cell.getNumericCellValue()); case HSSFCell.CELL_TYPE_STRING: return cell.getStringCellValue(); // case HSSFCell.CELL_TYPE_FORMULA: // // return cell.getCellFormula(); default:return ""; } } } </div>
试试其它关键字
读取excel
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3