信我或關注微信號:獅范兒,回復:學習,獲取免費學習資源包。
Excel文件轉成html頁面代碼
main類:啟動類
package com.test; import trans.toHtml; public class testToHtml { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub toHtml th=new toHtml(); // System.out.println(System.getProperty("java.library.path")); //-Djava.library.path=D:\jar\jacob_1.9 th.excelToHtml("d:/excel/運維門戶通訊錄.xlsx", "d:/test.html"); } }
代碼:
package trans; 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.InputStreamReader; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class toHtml { int WORD_HTML=8; int WORD_TXT=7; int EXCEL_HTML=44; /** * WORD?HTML * @param docfile WORD ? ?· * @param htmlfile ? HTML · */ public void wordToHtml(String docfile, String htmlfile) { ActiveXComponent app=new ActiveXComponent("Word.Application"); // word try { app.setProperty("Visible", new Variant(false)); Dispatch docs=app.getProperty("Documents").toDispatch(); Dispatch doc=Dispatch.invoke(docs,"Open",Dispatch.Method,new Object[] { docfile, new Variant(false),new Variant(true) }, new int[1]).toDispatch(); Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {htmlfile, new Variant(WORD_HTML) }, new int[1]); Variant f=new Variant(false); Dispatch.call(doc, "Close", f); } catch (Exception e) { e.printStackTrace(); } finally { app.invoke("Quit", new Variant[] {}); } } /** * EXCEL?HTML * @param xlsfile EXCEL ? ?· * @param htmlfile ? HTML · */ public void excelToHtml(String xlsfile, String htmlfile) { ActiveXComponent app=new ActiveXComponent("Excel.Application"); // excel try { app.setProperty("Visible", new Variant(false)); Dispatch excels=app.getProperty("Workbooks").toDispatch(); Dispatch excel=Dispatch.invoke(excels,"Open",Dispatch.Method,new Object[] { xlsfile, new Variant(false),new Variant(true) }, new int[1]).toDispatch(); Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {htmlfile, new Variant(EXCEL_HTML) }, new int[1]); Variant f=new Variant(false); Dispatch.call(excel, "Close", f); } catch (Exception e) { e.printStackTrace(); } finally { app.invoke("Quit", new Variant[] {}); } } /** * /? ? * @param folderPath ? ?· * @param htmlfile ? HTML · */ public void delFolder(String folderPath) { try { delAllFile(folderPath); //? String filePath=folderPath; filePath=filePath.toString(); java.io.File myFilePath=new java.io.File(filePath); myFilePath.delete(); //? ? } catch (Exception e) {e.printStackTrace();} } /** * /? ? ? * @param path ? ?· */ public boolean delAllFile(String path) { boolean flag=false; File file=new File(path); if (!file.exists()) { return flag; } if (!file.isDirectory()) { return flag; } String[] tempList=file.list(); File temp=null; for (int i=0; i < tempList.length; i++) { if (path.endsWith(File.separator)) { temp=new File(path + tempList[i]); } else { temp=new File(path + File.separator + tempList[i]); } if (temp.isFile()) { temp.delete(); } if (temp.isDirectory()) { delAllFile(path + "/" + tempList[i]);// ? ? ? delFolder(path + "/" + tempList[i]);// ? ? flag=true; } } return flag; } } 需要的jar包 <<jacob.jar>> <<toHtml.java>> <<testToHtml.java>>
來源網絡,侵權聯系刪除
私信我或關注微信號:獅范兒,回復:學習,獲取免費學習資源包。
什么學習HTML?
理解HTML代碼是制作網頁的基本技能。在互聯網高度發達的今天,網頁制作技術開始變的和修圖、處理視頻一樣重要。
第一,學會制作網頁就可以把自己想要展示的信息讓其他人使用瀏覽器觀看,無論是文字、照片還是視頻都可以通過瀏覽器觀看,甚至是分享自己制作的小游戲。
第二,理解網頁運行的基本原理后可以更好的瀏覽他人的網頁,尋找有用信息,更合理的使用第三方工具,簡單高效的制作自己的網頁。
HTML學習難度與重要性
HTML代碼本身非常容易理解,使用也非常簡單,但是單純使用HTML代碼寫出的網頁效果和我們平時看到的網頁相差甚遠。要想做出一個漂亮的頁面,我們還需要CSS和JavaScript的幫助。
HTML、CSS、JavaScript這些不同的代碼都有什么作用呢?簡單來說,HTML代碼可以為網頁提供基本內容,比如文字、圖片、音樂、視頻等。CSS代碼可以為頁面安排布局,比如標題的位置、字體、顏色、大小等,籠統的說就是為HTML代碼添加的內容增加樣式信息,例如修改位置、尺寸、顏色等屬性。JavaScript代碼可以為頁面提供交互(互動)功能,例如通過按鈕控制頁面內容的隱藏、出現,或者為多張圖片添加輪播功能等。
對比起來,HTML的學習難度最低,但作用是最重要的,因為一切頁面的基礎是內容,沒有內容,樣式與交互都不存在。
認識HTML基本結構
第一行 <!DOCTYPE HTML>
第二行 <html>
第三行 <head>
第四行 </head>
第五行 <body>
第六行 </body>
第七行 </html>
以上七行代碼是一個網頁文件的HTML代碼的基本結構。
大家觀察一下可以發現一個規律,每一行的內容都是寫在“<>”里面的。原因說來話長,先記住就行。每個寫在“<>”里面的內容叫做“標簽”。以后“標簽”這個詞會經常出現。
第一行<!DOCTYPE HTML>標簽指示 web 瀏覽器關于頁面使用哪個 HTML 版本進行編寫的指令(這句話可以暫時不必理解)。重要的是這句傲嬌的代碼只能存在在HTML代碼的第一行!
第二行<html>標簽與第七行的</html>標簽是一對,“<html>”叫做開始標簽,“</html>”叫做結束標簽。他們之間的區別在于結束標簽比開始標簽多一個“/”。這是HTML代碼的一個重要規律,以后我將要學到的大部分標簽都是這樣的,可能瀏覽器有些強迫癥吧,如果沒有結束標簽它會很不舒服,有可能會消極怠工而產生麻煩(不能正常顯示)。不過遺憾的是<!DOCTYPE HTML>太傲嬌,至今沒有另一半。<html> 與 </html> 標簽限定了文檔的開始點和結束點。
第三行與第四行組成一對,叫做“head”標簽。顧名思義,這個“頭”標簽里的內容統領全局,比如控制布局與樣式的CSS代碼文件和添加互動功能的JavaScript代碼文件在這里添加或導入;搜索頁面用的關鍵詞信息在這里添加;頁面信息的編碼方式也是由此指定;瀏覽器窗口的標題也在這里顯示。
第五行與第六行組成一對,叫做“body”標簽。用來顯示所有的頁面內容信息。
畫個圖來表示一下這四個標簽的層級關系(就是誰包含誰的意思,或者誰在誰的勢力范圍內出現):
邊學邊練------寫一個最簡單的頁面
正所謂萬丈高樓平地起,下面我們就動手做我們的第一個網頁文件。
工具:電腦,安裝一個瀏覽器(IE 火狐 谷歌瀏覽器都可以),確定“記事本”工具可用。
有了以上工具我們就可以寫了。
Step1 新建一個.txt文件。
操作如下:
(1)選擇合適的磁盤,比如D盤或F盤新建一個文件夾,命名為“網頁”。點擊進入。
(2)在空白處點擊鼠標右鍵新建一個文本文件,命名為“第一個頁面”。這時我們就有了一個“第一個頁面.txt”文件了。
如果你的電腦不顯示“.txt”這樣的文件后綴,可以在屏幕左上方尋找“查看”菜單,如圖2
圖 2
點擊后,出現如下菜單如圖3,點擊“選項”。
圖 3
點擊“查看”,去掉“隱藏已知文件類型的擴展名”選項前的“對號”,如圖4所示。這時就能顯示或修改文件后綴了。
圖 4
Step2 添加內容
(1)雙擊打開“第一個頁面.txt”文件,把HTML基本結構共七行代碼輸入進去。
(2)保存,關閉文件,在“第一個頁面.txt”文件上點擊鼠標右鍵,選擇“重命名”,將“.txt”修改為“.html”。這時,系統會提示,如圖1,大膽點“是”。
圖 1
這時我們的文件就變成了html網頁文件了。
我們雙擊這個文件發現瀏覽器內一片空白,這就好比我們在桌子上擺了個碟子,里面并沒有放美食。瀏覽器中的一片白就是空碟子的顏色,而HTML基本結構就是這個碟子。
下面我們往碟子里加點東西。
Step3 添加內容
(1)在“第一個頁面.html”文件上點擊鼠標右鍵,選擇“打開方式”,選擇“記事本”,如果沒有“記事本”選項,請點擊“選擇其他應用”,點擊選擇最下面的“更多應用”,選擇“記事本”。下一次選擇“打開方式”時,“記事本”就會出現了。
(2)在<head></head>標簽之間添加“<title>學習寫第一個網頁</title>”。在<body></body>之間添加“<h1>第一個網頁</h1>”;“<p>隨著學的內容越來越多,網頁就會越來越漂亮了!</p>”完成如圖5
圖 5
(3)保存,關閉,雙擊打開!效果如圖6
圖6
今天的邊學邊做就到這里,下一次會詳細解釋<head>標簽、<body>標簽中常出現的子標簽以及它們各自的作用。
第二篇《邊學邊做網頁篇——<head>標簽里裝點啥?》http://mp.toutiao.com/preview_article/?pgc_id=6738988870622249479
介紹新的 CSS 屬性 contain 之前,讀者首先需要了解什么是頁面的重繪與重排。
之前已經描述過很多次了,還不太了解的可以先看看這個提高 CSS 動畫性能的正確姿勢。
OK,下面進入本文正題,
contain 屬性允許我們指定特定的 DOM 元素和它的子元素,讓它們能夠獨立于整個 DOM 樹結構之外。目的是能夠讓瀏覽器有能力只對部分元素進行重繪、重排,而不必每次都針對整個頁面。
The contain property allows an author to indicate that an element and its contents are, as much as possible, independent of the rest of the document tree. This allows the browser to recalculate layout, style, paint, size, or any combination of them for a limited area of the DOM and not the entire page.
看看它的語法:
{
/* No layout containment. */
contain: none;
/* Turn on containment for layout, style, paint, and size. */
contain: strict;
/* Turn on containment for layout, style, and paint. */
contain: content;
/* Turn on size containment for an element. */
contain: size;
/* Turn on layout containment for an element. */
contain: layout;
/* Turn on style containment for an element. */
contain: style;
/* Turn on paint containment for an element. */
contain: paint;
}
復制代碼
除去 none,取值還有 6 個,我們一個一個來看看。
contain: size: 設定了 contain: size 的元素的渲染不會受到其子元素內容的影響。
The value turns on size containment for the element. This ensures that the containing box can be laid out without needing to examine its descendants.
我開始看到這個定義也是一頭霧水,光看定義很難明白到底是什么意思。還需實踐一番:
假設我們有如下簡單結構:
<div class="container">
</div>
復制代碼
.container {
width: 300px;
padding: 10px;
border: 1px solid red;
}
p {
border: 1px solid #333;
margin: 5px;
font-size: 14px;
}
復制代碼
并且,借助 jQuery 實現每次點擊容器添加一個 <p>Coco</p> 結構:
$('.container').on('click', e=> {
$('.container').append('<p>Coco</p>')
})
復制代碼
那么會得到如下結果:
可以看到,容器 .container 的高度是會隨著元素的增加而增加的,這是正常的現象。
此刻,我們給容器 .container 添加一個 contain: size,也就會出現上述說的:設定了 contain: size 的元素的渲染不會受到其子元素內容的影響。
.container {
width: 300px;
padding: 10px;
border: 1px solid red;
+ contain: size
}
復制代碼
再看看會發生什么:
正常而言,父元素的高度會因為子元素的增多而被撐高,而現在,子元素的變化不再影響父元素的樣式布局,這就是 contain: size 的作用。
接下來再說說 contain: style、contain: layout 、contain: paint。先看看 contain: style。
截止至本文書寫的過程中,contain: style 暫時被移除了。
CSS Containment Module Level 1: Drop the at-risk “style containment” feature from this specification, move it Level 2。
嗯,官方說辭是因為存在某些風險,暫時被移除,可能在規范的第二版會重新定義吧,那這個屬性也暫且放一放。
contain: paint:設定了 contain: paint 的元素即是設定了布局限制,也就是說告知 User Agent,此元素的子元素不會在此元素的邊界之外被展示,因此,如果元素不在屏幕上或以其他方式設定為不可見,則還可以保證其后代不可見不被渲染。
This value turns on paint containment for the element. This ensures that the descendants of the containing box don’t display outside its bounds, so if an element is off-screen or otherwise not visible, its descendants are also guaranteed to be not visible.
這個稍微好理解一點,先來看第一個特性:
這個特點有點類似與 overflow: hidden,也就是明確告知用戶代理,子元素的內容不會超出元素的邊界,所以超出部分無需渲染。
簡單示例,假設元素結構如下:
<div class="container">
<p>Coco</p>
</div>
復制代碼
.container {
contain: paint;
border: 1px solid red;
}
p{
left: -100px;
}
復制代碼
我們來看看,設定了 contain: paint 與沒設定時會發生什么:
CodePen Demo -- contain: paint Demo
通過使用 contain: paint, 如果元素處于屏幕外,那么用戶代理就會忽略渲染這些元素,從而能更快的渲染其它內容。
contain: layout:設定了 contain: layout 的元素即是設定了布局限制,也就是說告知 User Agent,此元素內部的樣式變化不會引起元素外部的樣式變化,反之亦然。
This value turns on layout containment for the element. This ensures that the containing box is totally opaque for layout purposes; nothing outside can affect its internal layout, and vice versa.
啟用 contain: layout 可以潛在地將每一幀需要渲染的元素數量減少到少數,而不是重新渲染整個文檔,從而為瀏覽器節省了大量不必要的工作,并顯著提高了性能。
使用 contain:layout,開發人員可以指定對該元素任何后代的任何更改都不會影響任何外部元素的布局,反之亦然。
因此,瀏覽器僅計算內部元素的位置(如果對其進行了修改),而其余DOM保持不變。因此,這意味著幀渲染管道中的布局過程將加快。
描述很美好,但是在實際 Demo 測試的過程中(截止至2021/04/27,Chrome 90.0.4430.85),僅僅單獨使用 contain:layout 并沒有驗證得到上述那么美好的結果。
設定了 contain: layout 的指定元素,該元素的任何后代的任何更改還是會影響任何外部元素的布局,點擊紅框會增加一條 <p>Coco<p> 元素插入到 container 中:
簡單的代碼如下:
<div class="container">
<p>Coco</p>
...
</div>
<div class="g-test"></div>
復制代碼
html,
body {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
gap: 10px;
}
.container {
width: 150px;
padding: 10px;
contain: layout;
border: 1px solid red;
}
.g-test {
width: 150px;
height: 150px;
border: 1px solid green;
}
復制代碼
CodePen Demo -- contain: layout Demo
截止至 2021-04-27,Can i Use 上的 CSS Contain 兼容性,已經可以開始使用起來:
鏈接:https://juejin.cn/post/6958990366888607757
來源:掘金
*請認真填寫需求信息,我們會在24小時內與您取得聯系。