jjava解析excle或者csv文件并导出到web界面:

创建ExcelShower.java

package com.ssm.controller;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;import net.sf.json.JSONArray;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;import com.pera.taskstat.excelToHtml.CSVFileUtil;
import com.pera.taskstat.excelToHtml.POIReadExcelToHtml03;/*** * @author yeyun* @Date 2016-06-015* @Describtion 解析数值模型的excel控制层*/
@Controller
@RequestMapping(value="view/show/")
public class ExcelShower{/*** SID.*/private static final long serialVersionUID = -8344971443770122206L;/*** 读取 Excel 显示页面.* @param properties* @return* @throws Exception*/@SuppressWarnings("deprecation")@RequestMapping(value="read.action")public String read(HttpServletRequest request,HttpServletResponse response) throws Exception {//定义一个字符串,用向前台传输拼写完毕的html页面String htmlExcel="";String m="";InputStream inputStream=null;  HttpURLConnection httpURLConnection=null; Element element = null;DocumentBuilder db = null;DocumentBuilderFactory dbf = null;//读取a.xml文件File f = new File(getClass().getClassLoader().getResource("/config/a.xml").getPath());List<String> listString=new ArrayList<String>(); //解析a.xml的内容,拼写读取文件的路径try {dbf = DocumentBuilderFactory.newInstance();db = dbf.newDocumentBuilder(); Document dt = db.parse(f);  element = dt.getDocumentElement();NodeList childNodes = element.getChildNodes();for (int i = 0; i < childNodes.getLength(); i++) {Node node1 = childNodes.item(i);listString.add(node1.getTextContent());}//要读取文件的路径m=listString.get(1)+listString.get(3)+"."+listString.get(5);}catch (Exception e) {e.printStackTrace();}//拼写出完整的urlString u_url="http://"+m;System.out.println(u_url);//根据url去服务器读取文件try{ URLDecoder decoder = new URLDecoder();String path = decoder.decode(u_url,"UTF-8");
//          URL url = new URL(null,path,new com.sun.net.ssl.internal.www.protocol.https.Handler()); URL url = new URL(path); System.out.println("url  =========  "+url);if(url!=null){  httpURLConnection=(HttpURLConnection) url.openConnection();  httpURLConnection.setConnectTimeout(3000);  httpURLConnection.setRequestMethod("GET");  int responseCode=httpURLConnection.getResponseCode();  if(responseCode==200){  inputStream=httpURLConnection.getInputStream();  }}   }catch(Exception e){  System.out.println("错误信息:"+e.getMessage()); }  //引入poi的工具类POIReadExcelToHtml03 poire = new POIReadExcelToHtml03();//取得url中完整的文件名称int index = u_url.lastIndexOf("/");  char[] ch = u_url.toCharArray();  String lastString =String.copyValueOf(ch, index + 1, ch.length - index - 1); String a_lastString=lastString.substring(lastString.length()-3,lastString.length());//判断csv还是xls格式if(a_lastString.equals("csv")){//顶用CSVFileUtil工具类方法CSVFileUtil cSVFileUtil=new CSVFileUtil();htmlExcel=cSVFileUtil.readCsvFile(inputStream, "utf-8");}else{HSSFWorkbook workbook = new HSSFWorkbook(inputStream); //获整个ExcelhtmlExcel = poire.getExcelInfo(workbook);}//放入集合,返回页面List<String> list=new ArrayList<String>();list.add(htmlExcel);//转为json格式String json=JSONArray.fromObject(list).toString(); //响应前台编码response.setContentType("application/json;charset=UTF-8");try {response.getWriter().print(json);} catch (IOException e) {    e.printStackTrace(); }return null;    }
}

  CSVFileUtil.java

package com.pera.taskstat.excelToHtml;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;  import net.sf.json.JSONArray;public class CSVFileUtil
{  /** * 构造,禁止实例化 */  public static void main(String[] args)  {  // String argPath = "D:/test/435453453.csv";  String argPath = "F://day01.csv";  //        readCsvFile(argPath, "gbk");  }  /** * csv文件读取<BR/> * 读取绝对路径为argPath的csv文件数据,并以List返回。 *  * @param argPath csv文件绝对路径 * @return csv文件数据(List<String[]>) * @throws FileNotFoundException * @throws IOException */  public  String readCsvFile(InputStream reader, String encoding)  {  List<String[]> list = new ArrayList<String[]>();
//        File file = new File(argPath);  //        FileInputStream input = null;
//        InputStreamReader reader = null;  BufferedReader bReader = null;  try  {
//            input = new FileInputStream(file);
//            if (encoding == null)
//            {
//                reader = new InputStreamReader(input);
//            }
//            else
//            {
//                reader = new InputStreamReader(input, encoding);
//            }  bReader = new BufferedReader(new  InputStreamReader(reader));  String str = bReader.readLine();  String str1 = "";  Pattern pCells = Pattern.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");  while ((str = bReader.readLine()) != null)  {  if (!str.endsWith(","))  {  str = str + ",";  }  Matcher mCells = pCells.matcher(str);  List<String> listTemp = new ArrayList<String>();  // 读取每个单元格  while (mCells.find()) {  str1 = mCells.group();  str1 = str1.replaceAll(  "(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");  str1 = str1.replaceAll("(?sm)(\"(\"))", "$2");  listTemp.add(str1);  }  list.add((String[]) listTemp.toArray(new String[listTemp.size()]));   }  }  catch (FileNotFoundException e)  {  // TODO Auto-generated catch block  e.printStackTrace();  }  catch (IOException e)  {  // TODO Auto-generated catch block  e.printStackTrace();  }  finally  {  if (null != bReader)  {  try  {  bReader.close();  }  catch (IOException e)  { e.printStackTrace();  }  }  } StringBuffer lsb = new StringBuffer();lsb.append("<table width=100% style=\"border:2px solid #000;border-width:1px 0 0 1px;margin:2px 0 2px 0;border-collapse:collapse;\">");for(int i=0;i<list.size();i++){lsb.append("<tr  style=\"border:1px solid #000;border-width:0 1px 1px 0;margin:2px 0 2px 0;\">");for(int j=0;j<list.get(i).length;j++){lsb.append("<td style=\"border:1px solid #000;border-width:0 1px 1px 0;margin:2px 0 2px 0;\">"+list.get(i)[j]+"</td>");}lsb.append("</tr>");}lsb.append("</table>");String a=lsb.toString();List<String> sList=new ArrayList<String>();sList.add(a);String sourceListJson=JSONArray.fromObject(sList).toString(); System.out.println("sourceListJson:"+sourceListJson);return a;  }
}

  POIReadExcelToHtml03.java

package com.pera.taskstat.excelToHtml;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.DecimalFormat;
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.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;public class POIReadExcelToHtml03 {public static void main(String[] args) {try {POIReadExcelToHtml03 poire = new POIReadExcelToHtml03();String path = "C://SURFACE_UWYO_HOUR.xls";File sourcefile = new File(path);InputStream is = new FileInputStream(sourcefile);//POIFSFileSystem fs = new POIFSFileSystem(is);HSSFWorkbook wb = new HSSFWorkbook(is);String htmlExcel = poire.getExcelInfo(wb);System.out.println(poire.getExcelInfo(wb));is.close();} catch (Exception e) {e.printStackTrace();}}public  String getHtmlExcel(HSSFWorkbook wb){try {String htmlPage = getExcelInfo(wb);return htmlPage;}  catch (Exception e) {e.printStackTrace();}return null;}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 style='border-collapse:collapse;' 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(); HSSFColor hc = palette.getColor(fontColor);sb.append("font-weight:" + boldWeight + ";");// System.out.println(hf.getFontHeight());sb.append("font-size: " + hf.getFontHeight() / 2.5 + "%;"); String fontColorStr = convertToStardColor(hc);if (fontColorStr != null && !"".equals(fontColorStr.trim())) {sb.append("color:" + fontColorStr + ";"); }int columnWidth = sheet.getColumnWidth(cell.getColumnIndex()) ;sb.append("width:" + columnWidth + "px;");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 + ";");}*/sb.append( getBorderStyle(palette,0,cellStyle.getBorderTop(),cellStyle.getTopBorderColor()));sb.append( getBorderStyle(palette,1,cellStyle.getBorderRight(),cellStyle.getRightBorderColor()));sb.append( getBorderStyle(palette,3,cellStyle.getBorderLeft(),cellStyle.getLeftBorderColor()));sb.append( getBorderStyle(palette,2,cellStyle.getBorderBottom(),cellStyle.getBottomBorderColor()));// boolean borderBoolean = cellStyle.getWrapText();//     // if(borderBoolean){// sb.append("border-style: inset;");// }sb.append("' ");}sb.append(">");if (stringValue == null || "".equals(stringValue.trim())) {sb.append("   ");} else {sb.append(stringValue.replace(String.valueOf((char) 160)," "));}sb.append("</td>");}sb.append("</tr>");}sb.append("</table>");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>();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 static 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 static 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 static 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 static String fillWithZero(String str) {if (str != null && str.length() < 2) {return "0" + str;}return str;}private static 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());DecimalFormat format = new DecimalFormat();//将数字显示为数字
//          format.applyPattern("0.00%");return format.format(cell.getNumericCellValue());case HSSFCell.CELL_TYPE_STRING:return cell.getStringCellValue();// case HSSFCell.CELL_TYPE_FORMULA://    // return cell.getCellFormula();default:return "";}}static String[] bordesr={"border-top:","border-right:","border-bottom:","border-left:"};static String[] borderStyles={"solid ","solid ","solid ","solid ","solid ","solid ","solid ","solid ","solid ","solid","solid","solid","solid","solid"};//tring[] borderClors={}; private static  String getBorderStyle(  HSSFPalette palette ,int b,short s, short t){if(s==0)return  bordesr[b]+borderStyles[s]+"#d0d7e5 1px;";;String borderColorStr = convertToStardColor( palette.getColor(t));borderColorStr=borderColorStr==null|| borderColorStr.length()<1?"#000000":borderColorStr;
//       System.out.println( bordesr[b]+borderStyles[s]+borderColorStr+" 1px; "+t);return bordesr[b]+borderStyles[s]+borderColorStr+" 1px;";}}

  

转载于:https://www.cnblogs.com/liuwenhao-1/p/7568993.html

java 解析excle相关推荐

  1. java解析excle

    getCellValue方法传入HSSFCell (excle表格),获取内部的数据信息 黑体部分表示获取公式格式的数值 import java.io.*;public class FormulaTo ...

  2. Java解析excel操作

    问题描述 在我们的项目中经常会遇到需要导入一定规格的excel文档,然后来解析里面的内容转换为数据导入到数据库或者进行其他操作.这样解析的问题就来了,解析excle从文件后缀名上分为.xls和.xls ...

  3. 利用poi解析excle并导出

    需求 将一个excle中的数据,依据某个规则,拆分成不同的excle,并导出 思路 依次解析excle,分别将符合规则的数据,放到list中,然后将list中的数据写进新建的excle 需要的jar包 ...

  4. IDEA Java解析GeoJson.json文件

    IDEA Java解析GeoJson.json文件 一.遇到的问题 1. 无法导入成功 2. org.geotools.StyleFactory is not an ImageIO SPI class ...

  5. easyexcel生成excel_阿里JAVA解析Excel工具easyexcel

    java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有 ...

  6. java图书分析echarts_Echarts后台Java解析

    Echarts 后台 Java 解析 一.引入 Echarts 的封装类 1 .基于 maven 架构的 com.github.abel533 ECharts 2.2.7 com.google.cod ...

  7. java 解析 csv 文件

    文章分类:JavaEye 一.貌似有bug,不行用 二.或 三. 的方法 Java代码   import java.io.BufferedReader; import java.io.FileInpu ...

  8. 用正则表达式和java解析csv文件

    用正则表达式和java解析csv文件 作者:弹着钢琴设计  来源:博客园  发布时间:2009-06-15 18:31  阅读:337 次  原文链接   [收藏]   在解析csv文件之前,先来看看 ...

  9. 详解Java解析XML的四种方法

    http://developer.51cto.com  2009-03-31 13:12  cnlw1985  javaeye  我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...

最新文章

  1. C++读取txt中数据的两种方法
  2. 【数据结构与算法】之深入解析“合并两个有序数组”的求解思路与算法示例
  3. 页面加载成功后调用_在微信小程序里实现图片预加载组件
  4. 资料员计算机知识大全,最新资料员专业基础知识
  5. pcl中set程序_PCL中分割方法的介绍(3)
  6. python定义函数名typo错误_17个新手常见Python运行时错误
  7. 最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器
  8. java并查集找朋友圈_并查集求朋友圈最大人数
  9. 【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
  10. 【使用工具推荐】使用什么录像软件录制屏幕
  11. CPU+GPU异构集群搭建的总结说明
  12. kindle 越狱_越狱您的Kindle,实现简单的屏幕保护程序自定义
  13. 使用python将pdf文件转化为word文件
  14. unity3d meshBaker教程(二) 自动合并
  15. 【渝粤题库】陕西师范大学201591 中国古代文学(二)作业(高起本)
  16. 从0到1-强化学习篇
  17. 春运在即 360又抢了12306的风头
  18. 【算法题】机器人的运动范围
  19. 最近日益火热的三农金融话题能为理财的首选吗
  20. python PDF文档

热门文章

  1. python 爬虫论_Python网络爬虫(理论篇)
  2. python项目结构图_python 项目目录结构设置
  3. 用python读取图像_如何用python获取图像
  4. linux git hook,前端通过githook一键自动部署项目
  5. java内存溢出模拟_模拟实战排查堆内存溢出(java.lang.OutOfMemoryError: Java heap space)问题...
  6. wpf 执行mysql命令_WPF(.net 3.5)使用MySql.Data.dll进行mysql数据库操作
  7. unix和linux命令_Linux / UNIX中的cp命令
  8. iOS UIScrollView和缩放
  9. java stack 实现_Swift Stack实现
  10. 软件系统架构有哪几种?