posts - 15, comments - 20, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2011年3月16日

                 剛開始使用new HSSFWorkbook(new FileInputStream(excelFile))來讀取Workbook,對Excel2003以前(包括2003)的版本沒有問題,但讀取Excel2007時發(fā)生如下異常:
          org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)

                  該錯誤意思是說,文件中的數(shù)據(jù)是用Office2007+XML保存的,而現(xiàn)在卻調(diào)用OLE2 Office文檔處理,應(yīng)該使用POI不同的部分來處理這些數(shù)據(jù),比如使用XSSF來代替HSSF。

                  于是按提示使用XSSF代替HSSF,用new XSSFWorkbook(excelFile)來讀取Workbook,對Excel2007沒有問題了,可是在讀取Excel2003以前(包括2003)的版本時卻發(fā)生了如下新異常(真是太悲劇了):
          org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: '*.xls'
                  該錯誤是說,操作無效,不能打開指定的xls文件。

                  下載POI的源碼后進行單步調(diào)試,發(fā)現(xiàn)剛開始的時候還是對的,但到ZipFile類后就找不到文件了,到網(wǎng)上查了下,原來是XSSF不能讀取Excel2003以前(包括2003)的版本,這樣的話,就需要在讀取前判斷文件是2003前的版本還是2007的版本,然后對應(yīng)調(diào)用HSSF或XSSF來讀取。
                  這是初步的想法,但這種做法比較麻煩,看了下API,發(fā)現(xiàn)XSSF和HSSF雖然在不同的包里,但卻引用了同一接口Workbook,于是想到了這樣的讀取方法:
                  Workbook book = null;
                  try {
                      book = new XSSFWorkbook(excelFile);
                  } catch (Exception ex) {
                      book = new HSSFWorkbook(new FileInputStream(excelFile));
                  }
                  在各版本的Excel中測試,沒有發(fā)生異常,問題解決。

          posted @ 2011-03-16 16:17 spinage 閱讀(12728) | 評論 (1)編輯 收藏

             最近遇到了request.getRemoteAddr()獲取的值為0:0:0:0:0:0:0:1,這是為什么呢,照道理講,應(yīng)該是127.0.0.1才對,為什么這個獲取的值變成了ipv6了呢,而且我發(fā)現(xiàn)這種情況只有在服務(wù)器和客戶端都在同一臺電腦上才會出現(xiàn)(例如用localhost訪問的時候才會出現(xiàn),用127.0.0.1不會出現(xiàn)),后來上網(wǎng)查了查原因,原來是/etc/hosts這個東西作怪(在windows上應(yīng)該是C:\Windows\system32\drivers\etc\ hosts這個文件),只需要注釋掉文件中的 # ::1 localhost 這一行即可解決問題。另外localhost這個文件很有用,這里你可以添加自己的條目,例如添加 192.168.0.111 buyer.com這樣子,在瀏覽器中原來只能使用192.168.0.111來訪問的,并可以使用 buyer.com來進行替換。

          posted @ 2011-03-16 16:08 spinage 閱讀(940) | 評論 (1)編輯 收藏

          主站蜘蛛池模板: 富阳市| 百色市| 黔南| 峡江县| 扶沟县| 嘉荫县| 年辖:市辖区| 和顺县| 周口市| 夏河县| 黑河市| 阳山县| 蓝田县| 柯坪县| 西吉县| 朝阳市| 龙泉市| 保康县| 公安县| 开平市| 方城县| 巴彦县| 扎鲁特旗| 三门县| 湟中县| 夏津县| 丰镇市| 大城县| 沾益县| 保康县| 大名县| 丰都县| 肇州县| 北碚区| 房产| 双牌县| 禄劝| 伊春市| 株洲市| 江孜县| 房山区|