Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲综合网在线,91久久国产综合精品女同我,在线观看视频你懂的

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          java開發工程師基礎學習一:HTML初識

          章摘要:這篇文章將給大家展現一個大致的html的世界,讓大家心里對一個大致的方向以及格式有一個較為大概的了解,內容中可能會出現較為深入的代碼知識,不必驚慌,這些代碼知識以后都會持續在文中講解,想要學習請持續關注我的文章。

          html初識:首先,推薦大家2個比較好用的寫html頁面的軟件,editplus和sublime ,在這里,我將使用sublime作為html開發軟件來給大家進行代碼的展示。特別提醒一下,不要使用一些非常強大的專業工具來幫助實現html代碼,不要依賴自動提示,這樣對初期沒有基礎的人來講是一種災難!

          在這里,有些同學可能會想找前端的工作,或者說剛接觸這行不久對方向有比較大的一個迷茫的區域,那么,如果想要找到前端的工作。以下這些知識必須要學到一個比較精通的程度:

          1.html + div + css:

          這是基礎,不必多說。

          2.Html5 + css3:

          目前最流行的前端頁面技術,除了IE6、7、8以外,IE9及很多瀏覽器已經對h5+css3 有很好的技術支持,css3的出現替代了很多的圖片以及特效,許多效果是JS所難以實現的,我舉個例子:

          這是一段普通的一個按鈕的代碼,加了一些普通的css樣式,最后結果如下:

          那么,我們如果加上一些css3和h5的樣式呢?話不多,具體代碼貼上:

          這一段加上了h5和css3的樣式,最后效果如下:

          這樣給客戶的感覺是不是要比第一種普通的好很多呢?自己看著也舒服。

          H5給我們增加了很多語義化的標簽,包括selection,nav,article,foot,head等,還對媒體標簽進行了擴增,最重要的是增入了畫布(canvas),svg等效果非常酷炫的一套代碼。但是canvas和svg對JS的要求非常高,甚至會應用到很多的設計模式以及算法。回復java獲取更多相關知識內容。

          大數據環境下,數據分析已由業務驅動轉變為數據驅動,網絡數據資源呈指數級增長,且散落在不同的數據源之中。對大多數企業和研究者而言,用“數據說話”仿佛成了大數據時代的重要武器。網絡爬蟲作為網絡數據獲取的重要技術,受到了越來越多數據需求者的青睞和追捧。

          作為網絡爬蟲的入門采用 Java 開發語言,內容涵蓋了網絡爬蟲的原理以及開發邏輯,Java 網絡爬蟲基礎知識,網絡抓包介紹,jsoup 的介紹與使用,HttpClient 的介紹與使用等內容。本課程在介紹網絡爬蟲基本原理的同時,注重具體的代碼實現,加深讀者對爬蟲的理解,加強讀者的實戰能力。

          內容

          第01課:網絡爬蟲原理

          引言

          隨著互聯網的迅速發展,網絡資源越來越豐富,信息需求者如何從網絡中抽取信息變得至關重要。目前,有效的獲取網絡數據資源的重要方式,便是網絡爬蟲技術。簡單的理解,比如您對百度貼吧的一個帖子內容特別感興趣,而帖子的回復卻有1000多頁,這時采用逐條復制的方法便不可行。而采用網絡爬蟲便可以很輕松地采集到該帖子下的所有內容。

          網絡爬蟲技術最廣泛的應用是在搜索引擎中,如百度、Google、Bing 等,它完成了搜索過程中的最關鍵的步驟,即網頁內容的抓取。下圖為簡單搜索引擎原理圖。

          網絡爬蟲的作用,我總結為以下幾點:

          • 輿情分析:企業或政府利用爬取的數據,采用數據挖掘的相關方法,發掘用戶討論的內容、實行事件監測、輿情引導等。
          • 企業的用戶分析:企業利用網絡爬蟲,采集用戶對其企業或商品的看法、觀點以及態度,進而分析用戶的需求、自身產品的優劣勢、顧客抱怨等。
          • 科研工作者的必備技術:現有很多研究都以網絡大數據為基礎,而采集網絡大數據的必備技術便是網絡爬蟲。利用網絡爬蟲技術采集的數據可用于研究產品個性化推薦、文本挖掘、用戶行為模式挖掘等。

          網絡爬蟲涉及的領域包括:

          網絡爬蟲的基本概念

          網絡爬蟲(Web Crawler),又稱為網絡蜘蛛(Web Spider)或 Web 信息采集器,是一種按照一定規則,自動抓取或下載網絡信息的計算機程序或自動化腳本,是目前搜索引擎的重要組成部分。

          • 狹義上理解:利用標準的 HTTP 協議,根據網絡超鏈接(如https://www.baidu.com/)和 Web 文檔檢索的方法(如深度優先)遍歷萬維網信息空間的軟件程序。
          • 功能上理解:確定待爬的 URL 隊列,獲取每個 URL 對應的網頁內容(如 HTML/JSON),解析網頁內容,并存儲對應的數據。

          網絡爬蟲的分類

          網絡爬蟲按照系統架構和實現技術,大致可以分為以下幾種類型:通用網絡爬蟲(General Purpose Web Crawler)、聚焦網絡爬蟲(Focused Web Crawler)、增量式網絡爬蟲(Incremental Web Crawler)、深層網絡爬蟲(Deep Web Crawler)。實際的網絡爬蟲系統通常是幾種爬蟲技術相結合實現的。

          • 通用網絡爬蟲:爬行對象從一些種子 URL 擴充到整個 Web,主要為門戶站點搜索引擎和大型 Web 服務提供商采集數據
          • 通用網絡爬蟲的爬取范圍和數量巨大,對于爬行速度和存儲空間要求較高,對于爬行頁面的順序要求較低,通常采用并行工作方式,有較強的應用價值。
          • 聚焦網絡爬蟲,又稱為主題網絡爬蟲:是指選擇性地爬行那些與預先定義好的主題相關的頁面。
          • 和通用爬蟲相比,聚焦爬蟲只需要爬行與主題相關的頁面,極大地節省了硬件和網絡資源,保存的頁面也由于數量少而更新快,可以很好地滿足一些特定人群對特定領域信息的需求。
          • 通常在設計聚焦網絡爬蟲時,需要加入鏈接和內容篩選模塊。一個常見的案例是基于關鍵字獲取符合用戶需求的數據,如下圖所示:


          • 增量網絡爬蟲:對已下載網頁采取增量式更新和只爬行新產生的或者已經發生變化網頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面,歷史已經采集過的頁面不重復采集。
          • 增量網絡爬蟲避免了重復采集數據,可以減小時間和空間上的耗費。通常在設計網絡爬蟲時,需要在數據庫中,加入時間戳,基于時間戳上的先后,判斷程序是否繼續執行。
          • 常見的案例有:論壇帖子評論數據的采集(如下圖所示論壇的帖子,它包含400多頁,每次啟動爬蟲時,只需爬取最近幾天用戶所發的帖子);天氣數據的采集;新聞數據的采集;股票數據的采集等。


          • Deep Web 爬蟲:指大部分內容不能通過靜態鏈接獲取,只有用戶提交一些表單信息才能獲取的 Web 頁面。例如,需要模擬登陸的網絡爬蟲便屬于這類網絡爬蟲。另外,還有一些需要用戶提交關鍵詞才能獲取的內容,如京東淘寶提交關鍵字、價格區間獲取產品的相關信息。


          網絡爬蟲的流程

          網絡爬蟲基本流程可用下圖描述:

          具體流程為:

          1. 需求者選取一部分種子 URL(或初始 URL),將其放入待爬取的隊列中。如在 Java 網絡爬蟲中,可以放入 LinkedList 或 List 中。
          2. 判斷 URL 隊列是否為空,如果為空則結束程序的執行,否則執行第三步驟。
          3. 從待爬取的 URL 隊列中取出待爬的一個 URL,獲取 URL 對應的網頁內容。在此步驟需要使用響應的狀態碼(如200,403等)判斷是否獲取數據,如響應成功則執行解析操作;如響應不成功,則將其重新放入待爬取隊列(注意這里需要移除無效 URL)。
          4. 針對已經響應成功后獲取到的數據,執行頁面解析操作。此步驟根據用戶需求獲取網頁內容里的部分數據,如汽車論壇帖子的標題、發表的時間等。
          5. 針對3步驟已解析的數據,將其進行存儲。

          網絡爬蟲的爬行策略

          一般的網絡爬蟲的爬行策略分為兩種:深度優先搜索(Depth-First Search)策略、廣度優先搜索(Breadth-First Search)策略

          • 深度優先搜索策略:從根節點的 URL 開始,根據優先級向下遍歷該根節點對應的子節點。當訪問到某一子節點 URL 時,以該子節點為入口,繼續向下層遍歷,直到沒有新的子節點可以繼續訪問為止。接著使用回溯的方法,找到沒有被訪問到的節點,以類似的方式進行搜索。下圖給出了理解深度優先搜索的一個簡單案例:


          • 廣度優先搜索策略:也稱為寬度優先,是另外一種非常有效的搜索技術,這種方法按照層進行遍歷頁面。下圖可幫助理解廣度優先搜索的遍歷方式:


          基于廣度優先的爬蟲是最簡單的爬取網站頁面的方法,也是目前使用較為廣泛的方法。在本達人課中,所講的案例皆為寬度優先式的爬蟲。

          學習建議

          網絡爬蟲是入門某一門編程語言的實戰技術:很多學習編程語言(如 Java、Python 或 C++ 等)的同學,采用的方式只看書或在網絡上看一些視頻,而這將導致的后果就是面對一個具體項目時,不知道如何上手,尤其對新手而言。或者,一段時間后,就將之前的書本內容或視頻內容遺忘了。

          為此,我建議這些學習者可采用網絡爬蟲技術入門某一門編程語言(如 Java、Python)。因為爬蟲技術是個綜合性很強的技術,涉及到編程語言的很多方面。本達人課特別選用了 Java 作為開發語言,將帶大家深入了解 Java 網絡爬蟲背后的核心技術。學完該課程,相信您也已很好地入門 Java 編程語言。

          對于零基礎入門 Java 網絡爬蟲的同學,在學習過程中請注意以下幾點:

          • 理解爬蟲的基本原理。
          • 學習 Java 網絡爬蟲涉及的基礎知識:基礎不牢,地動山搖,學習和掌握網絡爬蟲的基礎知識很重要。
          • 吃透基本的爬蟲代碼,并在此基礎上進行改寫。
          • 不斷實戰,發現爬蟲中涉及的新問題,并解決問題。

          最后,提供一些書籍和資料,給入門以及想深入學習 Java 網絡爬蟲的讀者:

          1. 《Java面向對象程序設計》(耿祥義、張躍平編著),由清華大學出版社出版,這是大學的教材,可作為基礎學習。
          2. 《Java核心技術》全2冊。
          3. 《Effective Java (3rd Edition)》:目前英文版已是第三版,中文版還在第二版,該書是 Java 進階必備之書,英文比較好的同學可直接看英文版。
          4. 《自己動手寫網絡爬蟲》(羅剛編著),國內第一本專門講解 Java 網絡爬蟲的書籍。

          第02課:Java 網絡爬蟲基礎知識

          引言

          Java 網絡爬蟲具有很好的擴展性可伸縮性,其是目前搜索引擎開發的重要組成部分。例如,著名的網絡爬蟲工具 Nutch 便是采用 Java 開發,該工具以 Apache Hadoop 數據結構為依托,提供了良好的批處理支持。

          Java 網絡爬蟲涉及到 Java 的很多知識。本篇中將會介紹網絡爬蟲中需要了解的 Java 知識以及這些知識主要用于網絡爬蟲的哪一部分,具體包括以下內容:

          • Maven 的使用;
          • log4j 的使用;
          • 對象的創建;
          • 集合的使用;
          • 正則表達式的使用;
          • HTTP 狀態碼;
          • 其他。

          Maven 的使用

          Maven 是什么

          Maven 是由 Apache 軟件基金會所提供一款工具,用于項目管理及自動構建。我們知道在構建一個 Java 工程時,需要使用到很多 Jar 包,例如操作數據庫需要使用到 mysql-connector-java 以及其相關依賴的 Jar 包。而 Maven 工具便可以很方便的對我們在項目中使用到的開源 Jar 包,進行很好的管理,比如下載某 Java 工程需要的 Jar 包及相關依賴 Java 包。

          Maven 如何使用

          Maven 使用項目對象模型(Project Object Model,POM)來配置,項目對象模型存儲在名為 pom.xml 的文件中。以 Java 為例,我們可以在 Eclipse 中創建一個 Maven 工程。其中,Maven Dependencies 便存放著由 Maven 管理的 Jar 包。

          正如前面所說,構建一個 Java 工程需要使用很多 Jar 包,比如,在 Java 網絡爬蟲中,我們需要用到數據庫連接、請求網頁內容、解析網頁內容的相關 Jar 包時,我們可以在上圖所示的 pom 文件中添加如下語句:

          <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version></dependency><dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version> 1.8.2</version></dependency><dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient </artifactId> <version> 4.2.3</version></dependency>

          之后,我們會驚訝地發現,工程的 Maven Dependencies 中自動下載了相關 Jar 包以及其依賴的 Jar 包。

          讀者可以在 Maven Repository 網站中檢索自己想要的 Jar 包,以及 Maven 操作語句。

          log4j 的使用

          log4j 是什么

          log4j 是一個基于 Java 的日志記錄工具,曾是 Apache 軟件基金會的一個項目。目前,日志是應用軟件中不可或缺的部分。

          log4j 怎么使用

          1. 使用 Maven 下載 log4j 的 Jar 包,代碼如下:

          <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>

          2. 在 src 目錄下創建 log4j.properties 文本文件,并做相關配置(關于每個配置的具體含義,讀者可參考博文 《詳細的 Log4j 使用教程》):

          ### 設置###log4j.rootLogger = debug,stdout,D,E### 輸出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 輸出DEBUG 級別以上的日志到=error.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = E://logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 輸出ERROR 級別以上的日志到=error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File =E://logs/error.log log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

          3. 實例程序,如下所示:

          package log4j;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class Test { static final Log logger = LogFactory.getLog(Test.class); public static void main(String[] args) { System.out.println("hello"); logger.info("hello world"); logger.debug("This is debug message."); logger.warn("This is warn message."); logger.error("This is error message."); }}

          基于此程序,我們就可以看到在我們工程的根目錄下會產生一個日志文件 error.log 和 log.log。

          在網絡爬蟲中,我們可以使用日志記錄程序可能出錯的地方,監控程序的運行狀態。

          對象的創建

          在 Java 中,經常使用 new 關鍵字來創建一個對象。例如,在爬取京東商品的id、product_name(商品名稱)、price(價格)時,我們需要將每個商品的信息封裝到對象里。

          JdInfoModel jingdongproduct = new JdInfoModel();

          在爬蟲中,我們要操作 JdInfoModel 類中的變量(即id、product_name、price),可以使用 private 變量定義的方式。并且,使用 set() 與 get() 方法對數據進行設置(爬取數據的封裝)和獲取使用(爬取數據的存儲)。下面的代碼為 JdInfoModel 類:

          package model;public class JdInfoModel { private int id; private String product_name; private double price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getProduct_name() { return product_name; } public void setProduct_name(String product_name) { this.product_name = product_name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } }

          集合的使用

          網絡爬蟲離不開對集合的操作,這里涉及到 List、Set、Queue、Map 等集合的操作。

          List 和 Set 集合的使用

          List 的特征是其元素以線性方式存儲,集合中可以存放重復對象。對比而言,Set 集合中的對象不按特定的方式排序,并且沒有重復對象。在網絡爬蟲中,可以使用 List<String> 存儲待爬的 URL 列表。例如:

          //List集合的創建List<String> urllist = new ArrayList<String>();urllist.add("https://movie.douban.com/subject/27608425");urllist.add("https://movie.douban.com/subject/26968024");//第一種遍歷方式for( String url : urllist ){ System.out.println(url);}//第二種遍歷方式for( int i=0; i<urllist.size(); i++ ){ System.out.println(i+":"+urllist.get(i));}//第三種遍歷方式Iterator<String> it = urllist.iterator();while ( it.hasNext() ){ System.out.println(it.next());}

          同時我們也可以使用上面 List<JdInfoModel> 來封裝具體的實例,即爬蟲所采集到的數據。Set 集合的使用與 List 集合類似,這里就不過多講解了。

          Map 的使用

          Map 是一種把鍵對象和值對象進行映射的集合,它的每一個元素都包含一對鍵對象和值對象,其中鍵對象不可以重復。Map 不僅在網絡爬蟲中常用,也常在文本挖掘算法的編寫中使用。在網絡爬蟲中,可以使用 Map 過濾一些重復數據,但并建議使用 Map 對大規模數據去重過濾,原因是 Map 有空間大小的限制。比如,使用網絡爬蟲爬取帖子時,可能遇到置頂帖,而置頂帖可能會與下面的帖子重復出現。以下程序為 Map 的使用案例:

          //Map的創建Map<String,Integer> map = new HashMap<String,Integer>();//值的添加,這里假設是爬蟲中的產品id以及每個產品id對應的銷售量map.put("jd1515", 100);map.put("jd1516", 300);map.put("jd1515", 100);map.put("jd1517", 200);map.put("jd1518", 100);//第一種方法遍歷for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value); } //第二種方法遍歷Iterator<Entry<String, Integer>> entries = map.entrySet().iterator(); while (entries.hasNext()) { Entry<String, Integer> entry = entries.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } //第三種方法遍歷for (Entry<String, Integer> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }

          Queue 的使用

          隊列(Queue)使用鏈表結構存儲數據,是一種特殊的線性表,它只允許在表的前端進行刪除操作,而在表的后端進行插入操作。LinkedList 類實現了 Queue 接口,因此我們可以把 LinkedList 當成 Queue 來用。Queue 常用來存待爬 URL 隊列。

          Queue<String> queue = new LinkedList<String>();//添加元素queue.offer("https://www.douban.com/people/46077896/likes/topic/");queue.offer("https://www.douban.com/people/1475408/likes/topic");queue.offer("https://www.douban.com/people/3853295/likes/topic/");boolean t = true;while (t) { //如果Url隊列為空,停止執行程序,否則請求Url if( queue.isEmpty() ){ t = false; }else { //請求的url String url = queue.poll(); System.out.println(url); //這里要寫請求數據,獲取相應狀態碼,如果狀態碼為200,則解析數據;如果為404,url移除隊列;否則該url重新如列 }

          正則表達式的使用

          正則表達式,是在解析數據(HTML 或 JSON 等)時,常用的方法。舉個列子,我想從下面的語句中提取用戶的 id(75975500):

          <a target="_blank" class="linkblack">尊少來自沈陽</a>

          后面,我會介紹解析工具 jsoup,其可以解析獲得“//i.autohome.com.cn/75975500”。接著,便可以使用正則表達式提取 75975500。

          String url = "http://i.autohome.com.cn/75975500";String user_id = url.replaceAll("\D", ""); //取代所有的非數字字符System.out.println(user_id); //輸出的結果即為75975500

          如下表所示,是 Java 中一些常用的基本正則表達式。

          正則表達式寫法含義\d代表0-9的任意數字\D代表任何非數字字符\s代表空格類字符\S代表非空格類字符\p{Lower}代表小寫字母[a-z]\p{Upper}代表大寫字母[A-Z]\p{Alpha}代表字母\p{Blank}代表空格或制表符

          HTTP 狀態碼

          當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。當瀏覽器接收并顯示網頁前,此網頁所在的服務器會返回一個包含 HTTP 狀態碼的信息頭(Server Header)用以響應瀏覽器的請求。在網絡爬蟲向后臺請求一個 URL 地址時,便會返回狀態碼,該狀態碼中包含豐富的信息。例如,200表示請求成功,成功獲取到了后臺傳的數據(HTML 或 JSON 等);301資源(網頁等)被永久轉移到其它 URL;404請求的資源(網頁等)不存在等。以下是 HTTP 狀態碼的分類。

          分類描述1**信息,服務器收到請求,需要請求者繼續執行操作。2**成功,操作被成功接收并處理。3**重定向,需要進一步的操作以完成請求。4**客戶端錯誤,請求包含語法錯誤或無法完成請求。5**服務器錯誤,服務器在處理請求的過程中發生了錯誤。

          詳細的 HTTP 狀態碼列表,讀者可以參考這個地址。

          其他

          另外,網絡爬蟲還涉及到其他方面的 Java 知識,比如說Java 輸入輸出流、Java 操作數據庫、Java 多線程操作、Java 對日期的處理、Java 中的接口與繼承。所以,以網絡爬蟲,入門 Java 編程是非常好的方式。在后面的課程中,我會介紹網絡爬蟲如何使用這些技術。

          pire.XLS for Java 13.3.6 已發布。本次更新支持將Excel轉換為獨立的HTML文件,支持了保存整個Excel到HTML流,支持了給透視表的透視域字段(PivotFields)和數據域字段(DataFields)添加條件格式,并且支持取代一個單元格內部分文本的功能。同時,該版本還Excel 到 PDF和圖片的轉換。此外,一些已知問題也得到了修復,如修復了轉換圖表到圖片時引導線丟失的問題。詳情請閱讀以下內容。

          新功能:

          • 支持了將Excel轉換為獨立的HTML文件。
          Workbook wb = new Workbook();
          wb.loadFromFile("data/mytest.xlsx");
          HTMLOptions.Default.isStandAloneHtmlFile(true);
          wb.saveToFile("result.html", FileFormat.HTML);
          • 支持了保存整個Excel到HTML流。
          Workbook wb = new Workbook();
          wb.loadFromFile("data/mytest.xlsx");
          FileOutputStream fileStream = new FileOutputStream("output/saveStream_result.html");
          wb.saveToStream(fileStream, FileFormat.HTML);
          fileStream.close();
          • 支持了給透視表的透視域字段(PivotFields)和數據域字段(DataFields)添加條件格式。
          PivotTable table = (PivotTable)worksheet.getPivotTables().get(0);
          PivotConditionalFormatCollection pcfs = table.getPivotConditionalFormats();
          PivotConditionalFormat pc = pcfs.addPivotConditionalFormat(table.getColumnFields().get(0));
          //PivotConditionalFormat pc = pcfs.addPivotConditionalFormat(table.getRowFields().get(0));
          //PivotConditionalFormat pc = pcfs.addPivotConditionalFormat(table.getDataFields().get(0));
          //PivotConditionalFormat pc = pcfs.addPivotConditionalFormat(table.getPageFields().get(0));
          IConditionalFormat cf = pc.addCondition();
          cf.setFormatType(ConditionalFormatType.ContainsBlanks);
          cf.setFillPattern(ExcelPatternType.Solid);
          cf.setBackColor(Color.Red);
          • 支持了取代一個單元格內部分文本的功能。
          sheet.getCellList().get(0).textPartReplace("Office", "Spire");

          問題修復:

          • 修復了轉換圖表到圖片時引導線丟失的問題。
          • 修復了轉換Excel到圖片時部分數據位置下移的問題。
          • 修復了轉換Excel到圖片時雙下劃線變單下劃線的問題。
          • 修復了為Excel添加頁腳時程序報錯java.lang.NullPointerException的問題。
          • 修復了轉換Excel到PDF時程序報錯Invalid sectionId of Header Footer image 的問題。
          • 修復了轉換Excel到圖片時進度條中的進度顏色丟失的問題。
          • 修復了轉換圖表到圖片時X軸數據偏移的問題。
          • 修復了轉換Excel到PDF時內容不正確的問題。

          下載Spire.XLS for Java 13.3.6請點擊:

          Spire.XLS for Java | 下載


          主站蜘蛛池模板: 无码播放一区二区三区| 韩国资源视频一区二区三区| 亚洲欧洲一区二区| 波多野结衣AV一区二区三区中文 | 精品国产乱码一区二区三区| 国产在线视频一区二区三区 | 狠狠色婷婷久久一区二区| 国产精品视频一区| 精品无码人妻一区二区免费蜜桃 | 亚洲中文字幕在线无码一区二区| 综合激情区视频一区视频二区| 人妻无码视频一区二区三区| 无码国产精品一区二区免费3p| 波多野结衣一区二区三区高清在线| 日本中文字幕一区二区有码在线| 国产午夜精品一区二区| 精品国产一区二区三区久久狼| 中文字幕人妻第一区 | 日韩一区二区三区精品| 狠狠综合久久av一区二区| 夜夜高潮夜夜爽夜夜爱爱一区| 无码一区二区波多野结衣播放搜索| 久久久久人妻一区二区三区vr| 日韩精品无码一区二区三区 | 亚洲欧美日韩中文字幕一区二区三区 | 久久精品无码一区二区无码| 色狠狠一区二区三区香蕉蜜桃| 国产亚洲自拍一区| 国产情侣一区二区三区| 亚洲av片一区二区三区| 一区二区三区在线|日本| 国产精品一区二区久久精品无码| 成人区精品一区二区不卡| 人妻免费一区二区三区最新| 国产一区二区中文字幕| 精品午夜福利无人区乱码一区| 欧美一区内射最近更新| 制服美女视频一区| 国精品无码一区二区三区左线 | 无码中文人妻在线一区二区三区| 色窝窝免费一区二区三区|