⑴ java怎样读取html文件
java读取html文件跟读取普通文件一样,都是使用输入输出流,但是java读取html文件之后还需要解析,使用Jsoup对html进行解析。下面是一个java读取带表格的任意html文件,并把html文件转换成excel的例子。
要求:要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,提供给定的roster.html文件,通过java代码,实现生成与html页面的table相同样式的roster.xls文件。
首先看roster.html:
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.IOException;
importjxl.Workbook;
importjxl.write.Label;
importjxl.write.WritableCellFormat;
importjxl.write.WritableFont;
importjxl.write.WritableSheet;
importjxl.write.WritableWorkbook;
importjxl.write.WriteException;
importjxl.write.biff.RowsExceededException;
importorg.jsoup.Jsoup;
importorg.jsoup.nodes.Document;
importorg.jsoup.nodes.Element;
importorg.jsoup.select.Elements;
publicclassHTMLTOExcel{
publicstaticvoidmain(Stringargs[])throwsIOException{
///读取classpath目录下面的路径
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+="roster.html";
toExcel(path,"roster");
}
//得到Document并且设置编码格式
publicstaticDocumentgetDoc(StringfileName)throwsIOException{
FilemyFile=newFile(fileName);
Documentdoc=Jsoup.parse(myFile,"GBK","");
returndoc;
}
///这个方法用于根据trs行数和sheet画出整个表格
publicstaticvoidmergeColRow(Elementstrs,WritableSheetsheet)throwsRowsExceededException,WriteException{
int[][]rowhb=newint[300][50];
for(inti=0;i<trs.size();i++){
Elementtr=trs.get(i);
Elementstds=tr.getElementsByTag("td");
intrealColNum=0;
for(intj=0;j<tds.size();j++){
Elementtd=tds.get(j);
if(rowhb[i][realColNum]!=0){
realColNum=getRealColNum(rowhb,i,realColNum);
}
introwspan=1;
intcolspan=1;
if(td.attr("rowspan")!=""){
rowspan=Integer.parseInt(td.attr("rowspan"));
}
if(td.attr("colspan")!=""){
colspan=Integer.parseInt(td.attr("colspan"));
}
Stringtext=td.text();
drawMegerCell(rowspan,colspan,sheet,realColNum,i,text,rowhb);
realColNum=realColNum+colspan;
}
}
}
///这个方法用于根据样式画出单元格,并且根据rowpan和colspan合并单元格
publicstaticvoiddrawMegerCell(introwspan,intcolspan,WritableSheetsheet,intrealColNum,intrealRowNum,Stringtext,int[][]rowhb)throwsRowsExceededException,WriteException{
for(inti=0;i<rowspan;i++){
for(intj=0;j<colspan;j++){
if(i!=0||j!=0){
text="";
}
Labellabel=newLabel(realColNum+j,realRowNum+i,text);
WritableFontcountents=newWritableFont(WritableFont.TIMES,10);//设置单元格内容,字号12
WritableCellFormatcellf=newWritableCellFormat(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);
}
publicstaticintgetRealColNum(int[][]rowhb,inti,intrealColNum){
while(rowhb[i][realColNum]!=0){
realColNum++;
}
returnrealColNum;
}
///根据colgroups设置表格的列宽
publicstaticvoidsetColWidth(Elementscolgroups,WritableSheetsheet){
if(colgroups.size()>0){
Elementcolgroup=colgroups.get(0);
Elementscols=colgroup.getElementsByTag("col");
for(inti=0;i<cols.size();i++){
Elementcol=cols.get(i);
Stringstrwd=col.attr("width");
if(col.attr("width")!=""){
intwd=Integer.parseInt(strwd);
sheet.setColumnView(i,wd/8);
}
}
}
}
//toExcel是根据html文件地址生成对应的xls
publicstaticvoidtoExcel(StringfileName,StringexcelName)throwsIOException{
Documentdoc=getDoc(fileName);
Stringtitle=doc.title();
///得到样式,以后可以根据正则表达式解析css,暂且没有找到cssparse
Elementsstyle=doc.getElementsByTag("style");
///得到Table,demo只演示输入一个table,以后可以用循环遍历tables集合输入所有table
Elementstables=doc.getElementsByTag("TABLE");
if(tables.size()==0){
return;
}
Elementtable=tables.get(0);
//得到所有行
Elementstrs=table.getElementsByTag("tr");
///得到列宽集合
Elementscolgroups=table.getElementsByTag("colgroup");
try{
//文件保存到classpath目录下面
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+=excelName+".xls";
System.out.println(path);
WritableWorkbookbook=Workbook.createWorkbook(newFile(path));
WritableSheetsheet=book.createSheet("人事关系",0);
setColWidth(colgroups,sheet);
mergeColRow(trs,sheet);
book.write();
book.close();
}catch(RowsExceededExceptione){
e.printStackTrace();
}catch(WriteExceptione){
e.printStackTrace();
}
}
}
解析html文件的例子文档地址:http://blog.csdn.net/androidwuyou/article/details/52636821
⑵ 我的java小应用程序加载到HTML文件中时 打开时提示安全设置已阻止本地应用程序的运行 怎么解决
如果是谷歌内核的浏览器,进入设置>>高级设置>>隐私设置>>内容设置>>插件>>停用单个插件,找到“Java(TM) ”,勾选“始终允许”。IE设置Internet选项-->高级 找到"允许活动内容在我的计算机上的文件中运行" 打上勾;Internet选项-->程序-->管理加载项 找到“Java(tm)Plug……”启用如果不想出现“为了有利于保护安全性,Internet 已限制网页运行可以访问计算机的脚本……”,需要在安全选项-->自定义级别-->Activex控件和插件,勾选启用
⑶ 怎么访问java里的html文件
eclipse:
localhost
:8080:项目名:WebContent/html文件名,如过放在其他文件包里面请在文件名外面加上文件包名
MyEclipse
:localhost:8080:项目名:WebRoot/html文件名,如过放在其他文件包里面请在文件名外面加上文件包名
⑷ java怎样读取html文件
java可以使用jsoup、htmlparser等工具进行html的读取和解析,以下是详细说明:
1、jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。据说它是基于MIT协议发布的。
jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML;
使用DOM或CSS选择器来查找、取出数据;
可操作HTML元素、属性、文本;
示例代码:
Document doc = Jsoup.parse(input, "UTF-8", "http://www.dangdang.com");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
2、htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html。它能超高速解析html,而且不会出错。现在htmlparser最新版本为2.0。据说htmlparser就是目前最好的html解析和分析的工具。无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。
在线文档: http://www.osctools.net/apidocs/apidoc?api=HTMLParser;http://htmlparser.sourceforge.net/project-info.html
示例代码:
Parser parser = new Parser ("http://www.dangdang.com");
NodeList list = parser.parse (null);
Node node = list.elementAt (0);
NodeList sublist = node.getChildren ();
System.out.println (sublist.size ());
⑸ java打开html文件
你的意思是用java代码模拟访问一个html网页? 可以用URLConnection
URL url = new URL("你的html文件的http地址");
URLConnection URLconnection = url.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) URLconnection;
InputStream urlStream = httpConnection.getInputStream();
另外如果html里有js的话 是不能模拟访问js的
⑹ 如何使一个java程序,一执行,就打开本地某目录下的html文件比如abc.html, 就像双击打开那样!
恩,你的命令不正确,怎么会打开呢?
试试我给你的代码吧
import java.io.File;
public class TestRuntime {
/**
* @param args
*/
public static void main(String args[]) throws Exception
{
File file = new File("abc.html");
Runtime ce=Runtime.getRuntime();
System.out.println(file.getAbsolutePath());
ce.exec("cmd /c start "+file.getAbsolutePath());
}
}
只要在你的同目录下有abc.html,就可以打开了