java怎样读取html文件

java读取html文件跟读取普通文件一样,都是使用输入输出流,但是java读取html文件之后还需要解析,使用Jsoup对html进行解析。下面是一个java读取带表格的任意html文件,并把html文件转换成excel的例子。要求: 要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,...
java怎样读取html文件
java读取html文件三项内容:
1、和普通的文件一样的读取方式即可解决;
2、例如放在项目的根目录下,在代码中就可以直接调用即可,无需加其他前缀路径;
3、例如放在web目录中的对应目录中,那么就可以照样访问,都不是问题。2016-08-30
java读取html文件跟读取普通文件一样,都是使用输入输出流,但是java读取html文件之后还需要解析,使用Jsoup对html进行解析。下面是一个java读取带表格的任意html文件,并把html文件转换成excel的例子。
要求: 要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,提供给定的roster.html文件,通过java代码,实现生成与html页面的table相同样式的roster.xls文件。

首先看roster.html:

java代码:
import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;public class HTMLTOExcel {public static void main(String args[]) throws IOException{///读取classpath目录下面的路径String path=HTMLTOExcel.class.getResource("/").getPath();path+="roster.html";toExcel(path,"roster"); } //得到Document并且设置编码格式public static Document getDoc(String fileName) throws IOException{ File myFile=new File(fileName); Document doc= Jsoup.parse(myFile, "GBK",""); return doc;}///这个方法用于根据trs行数和sheet画出整个表格public static void mergeColRow(Elements trs,WritableSheet sheet) throws RowsExceededException, WriteException{int[][] rowhb=new int[300][50];for(int i=0;i<trs.size();i++){ Element tr=trs.get(i); Elements tds=tr.getElementsByTag("td"); int realColNum=0; for(int j=0;j<tds.size();j++){ Element td=tds.get(j); if(rowhb[i][realColNum]!=0){ realColNum=getRealColNum(rowhb,i,realColNum); } int rowspan=1; int colspan=1; if(td.attr("rowspan")!=""){ rowspan = Integer.parseInt(td.attr("rowspan")); } if(td.attr("colspan")!=""){ colspan = Integer.parseInt(td.attr("colspan")); } String text=td.text(); drawMegerCell(rowspan,colspan,sheet,realColNum,i,text,rowhb); realColNum=realColNum+colspan; } }}///这个方法用于根据样式画出单元格,并且根据rowpan和colspan合并单元格public static void drawMegerCell(int rowspan,int colspan,WritableSheet sheet,int realColNum,int realRowNum,String text,int[][] rowhb) throws RowsExceededException, WriteException{ for(int i=0;i<rowspan;i++){ for(int j=0;j<colspan;j++){ if(i!=0||j!=0){ text=""; } Label label = new Label(realColNum+j,realRowNum+i,text); WritableFont countents = new WritableFont(WritableFont.TIMES,10); // 设置单元格内容,字号12 WritableCellFormat cellf = new WritableCellFormat(countents ); cellf.setAlignment(jxl.format.Alignment.CENTRE);//把水平对齐方式指定为居中 cellf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//把垂直对齐方式指定为居 label.setCellFormat(cellf); sheet.addCell(label); rowhb[realRowNum+i][realColNum+j]=1; } } sheet.mergeCells(realColNum,realRowNum, realColNum+colspan-1,realRowNum+rowspan-1);}public static int getRealColNum(int[][] rowhb,int i,int realColNum){while(rowhb[i][realColNum]!=0){realColNum++;}return realColNum;}///根据colgroups设置表格的列宽public static void setColWidth(Elements colgroups,WritableSheet sheet){ if(colgroups.size()>0){ Element colgroup=colgroups.get(0); Elements cols=colgroup.getElementsByTag("col"); for(int i=0;i<cols.size();i++){ Element col=cols.get(i); String strwd=col.attr("width"); if(col.attr("width")!=""){ int wd=Integer.parseInt(strwd); sheet.setColumnView(i,wd/8); } } }}//toExcel是根据html文件地址生成对应的xlspublic static void toExcel(String fileName,String excelName)throws IOException{Document doc=getDoc(fileName); String title = doc.title(); ///得到样式,以后可以根据正则表达式解析css,暂且没有找到cssparse Elements style= doc.getElementsByTag("style"); ///得到Table,demo只演示输入一个table,以后可以用循环遍历tables集合输入所有table Elements tables= doc.getElementsByTag("TABLE"); if(tables.size()==0){ return; } Element table=tables.get(0); //得到所有行 Elements trs = table.getElementsByTag("tr"); ///得到列宽集合 Elements colgroups=table.getElementsByTag("colgroup"); try { //文件保存到classpath目录下面 String path=HTMLTOExcel.class.getResource("/").getPath();path+=excelName+".xls"; System.out.println(path); WritableWorkbook book = Workbook.createWorkbook(new File(path)); WritableSheet sheet = book.createSheet("人事关系", 0); setColWidth(colgroups,sheet); mergeColRow(trs,sheet); book.write(); book.close(); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); }}}解析html文件的例子文档地址:http://blog.csdn.net/androidwuyou/article/details/52636821
2016-10-01
java读取html文件和读取普通文件一样,用io读写操作就行
要是读完需要解析html文件内容的话,可以使用jsoup,操作html的dom结构,跟jQuery语法类似。
2016-09-19
和读取xml文件一样吧2016-08-29
使用Jsoup包可以读取编辑html文件,具体请自行百度吧。2016-08-29
mengvlog 阅读 11 次 更新于 2025-07-19 16:27:19 我来答关注问题0
  •  yangdada22 java怎样读取html文件

    1、jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。据说它是基于MIT协议发布的。jsoup的主要功能如下:从一个URL,文件或字符串中解析HTML;使用DOM或CSS选择器来查找、取出数据;可操作...

  • 首先看roster.html:java代码:import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.Writa...

  • 首先,创建一个StringBuffer对象用于存储HTML内容。接下来,使用java.net.URL类创建一个URL对象,传入URL路径。然后,通过URL对象获取HttpURLConnection对象,它表示到URL所引用的远程对象的连接。接着,通过HttpURLConnection对象获取输入流,并使用InputStreamReader对象包装该输入流。之后,使用BufferedReader对象...

  •  百度网友561251d 如何使用java查看html文件的源代码

    如果是只读取HTML文件的话,可以直接用FileReader就可以了。如果是通过访问URL获取HTML代码的话可以使用HttpClient。

  •  crj_0 java程序怎么读取html网页?

    步骤:一、使用java.net包下的URL类,可以将一个网页(链接)封装成一个URL对象。二、URL对象有一个openStream()方法,使用该方法可以获取该网页的输入流,我们可以通过读取输入流的方式获得网页的内容,并通过输出流写入HTML文件中。补充:步骤:1.通过URL对象的openStream()方法获得网页的字节输入流 。2...

檬味博客在线解答立即免费咨询

代码相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部