三、java相關
這裡shell程式調用java程式的原因是:perl指令碼產生的excel檔案,其中的詞條URL無法解碼為人可以識別的漢字(與linux系統編碼相關的,不能改系統編碼,所以要用java程式處理一下perl產生的excel)。例如將http://www.hudong.com/wiki/%E5%8D%95%E6%9B%B2%E5%BE%AA%E7%8E%AF%E7%97%87解碼為http:www.hudong.com/wiki/單曲迴圈症
儲存到新的excel中。
關於java讀寫excel的基本操作,可參考jxl匯出Excel最全面的解釋。
java讀寫excel檔案有兩種方式:一種是org.apache.poi方法,一種是jxl方法(要匯入一個jar包:jxl.jar)。開始我用的poi的方式,但是該方法處理原始excel檔案總報錯:
java.lang.RuntimeException: Unexpected record type (org.apache.poi.hssf.record.HyperlinkRecord)
at org.apache.poi.hssf.record.aggregates.RowRecordsAggregate.<init>(RowRecordsAggregate.java:98)
at org.apache.poi.hssf.model.Sheet.<init>(Sheet.java:203)
at org.apache.poi.hssf.model.Sheet.createSheet(Sheet.java:158)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:287)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:201)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:317)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:298)
at com.hudong.test.TestPoi.read(TestPoi.java:105)
at com.hudong.test.TestPoi.read(TestPoi.java:79)
at com.hudong.test.TestPoi.main(TestPoi.java:36)
解決該問題的方法是開啟excel檔案,隨便點兩下關閉的時候選擇儲存,問題就解決了。但是伺服器上的excel沒人讓你每次去點兩下,所以改選用jxl方式來處理perl產生的excel檔案。
1、utf8解碼為可識別的漢字的方法(java):
String temp = http://www.hudong.com/wiki/%E5%8D%95%E6%9B%B2%E5%BE%AA%E7%8E%AF%E7%97%87temp = URLDecoder.decode(temp,"utf-8");
編碼的方法為URLEncoder.encode();
2、java讀寫excel檔案:(已上傳資源,可下載,在我的資源裡面)
DecodeExcelJXL.java
通過args[]直接獲得shell指令碼傳過來的參數。
public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException{// 根據是否有參數,取得待處理excel表格 if (args != null && args.length == 1) { filePath=args[0]; } rewriteWithNew(filePath); }