通常都是用poi技術去讀取excel表格的,但是這個技術又是什麼呢
Apache POI是一種流行的API,它允許程式設計師使用Java程式創建,修改和顯示MS Office文件。這由Apache軟體基金會開發使用Java分散式設計或修改Microsoft Office文件的開源程式庫。它包含類別和方法對使用者輸入資料或檔案到MS Office文件進行解碼。
Apache POI是Apache軟體基金會提供的100%開源程式庫。大多數中小規模的應用程式開發主要依賴Apache POI(HSSF+ XSSF)。它支援Excel 庫的所有基本功能; 然而,呈現和文字提取是它的主要特點。
這是建立或維護Excel工作簿的所有類別的超介面。它屬於org.apache.poi.ss.usermodel套件。是實作此介面的兩個類,如下所示:
HSSFWorkbook : 這個類別有讀取和.xls 格式和寫入Microsoft Excel檔案的方法。它與微軟Office97-2003版本相容。
XSSFWorkbook : 這個類別有讀寫Microsoft Excel和OpenOffice的XML檔案的格式.xls或.xlsx的方法。它與MS-Office版本2007或更高版本相容。
它是在org.apache.poi.hssf.usermodel套件的高層次的類別。它實作了Workbook 接口,用於Excel檔案中的.xls格式。以下列出的是一些本類別下的方法和建構子。
S.No. | 建構子與說明 |
---|---|
1 |
HSSFWorkbook() 從頭開始建立一個新的HSSFWorkbook物件時。 |
2 |
HSSFWorkbook(DirectoryNode directory, boolean preserveNodes) #建立一個特定的目錄中一個新的HSSFWworkbook物件。 |
3 |
HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes) #給定一個POIFSFileSystem物件和特定的目錄中,它建立了一個SSFWorkbook物件讀取指定的工作簿。 |
4 |
HSSFWorkbook(java.io.InputStream s) 建立使用輸入流中的新HSSFWorkbook物件時。 |
5 |
HSSFWorkbook(java.io.InputStream s, boolean preserveNodes) #構建在輸入流的POI檔案系統。 |
6 |
HSSFWorkbook(POIFSFileSystem fs) 使用POIFSFileSystem物件建構的新HSSFWorkbook物件時。 |
7 |
HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes) 給定一個POIFSFileSystem物件時,它會建立一個新的HSSFWorkbook物件時讀取指定的工作簿。 |
這些建構中的常用參數:
#directory : 這是從POI檔案系統處理的目錄。
fs :它是包含簿流該POI的檔案系統。
preservenodes : 這是決定是否保留其他節點像巨集的選用參數。它消耗大量的內存,因為它儲存在記憶體中的所有POIFileSystem(如果設定)。
注意:HSSFWorkbook類別包含了許多方法;然而,它們僅與XLS格式相容。在本教程中,重點是在Excel檔案格式的最新版本。因此,HSSFWorkbook類別的方法,這裡沒有列出。如果需要這些類別的方法,那麼請參考POI-HSSFWorkbook類別API在 https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html.
它是用來表示高和低層次Excel檔案格式的類別。它屬於org.apache.xssf.usemodel套件,並實作Workbook介面。下面列出的是這個類別的方法和建構子。
S.No. | 建構子與說明 |
---|---|
1 |
XSSFWorkbook() #從頭開始建立一個新的XSSFworkbook物件。 |
2 |
XSSFWorkbook(java.io.File file) 建構從給定文件中的XSSFWorkbook物件。 |
3 |
XSSFWorkbook(java.io.InputStream is) 建構一個XSSFWorkbook對象,透過緩衝整個輸入流到記憶體中,然後為它開啟OPCPackage物件。 |
4 |
XSSFWorkbook(java.lang.String path) 建構一個給定文件的完整路徑的XSSFWorkbook物件。 |
Sheet是在org.apache.poi.ss.usermodel套件的接口,它是創建具有特定名稱的高或低級別的電子表格的所有類別的超介面。電子表格的最常見的類型是工作表,它被表示為單元的網格。
這是在org.apache.poi.hssf.usermodel套件的類別。它可以建立Excel電子表格,它允許在sheet 方式和表資料格式。
S.No. | 建構子與描述 |
---|---|
1 |
HSSFSheet(HSSFWorkbook workbook) 建立新HSSFSheet透過呼叫HSSFWorkbook從頭開始建立一個表格。 |
2 |
HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet) #建立HSSFSheet表示給定表對象。 |
這是代表了Excel電子表格的高層級代表的一類。這在org.apache.poi.hssf.usermodel包下。
S.No. | 建構子與描述 |
---|---|
1 |
XSSFSheet() 創造了新的XSSFSheet- 呼叫XSSFWorkbook從頭開始建立一個表格。 |
2 |
XSSFSheet(PackagePart part, PackageRelationship rel) #建立XSSFSheet表示給定包的一部分和關係。 |
#S.No. | 方法與描述 |
---|---|
1 |
addMergedRegion(CellRangeAddress region) 新增單元的合併區域(因此這些單元格合併形成一個)。 |
2 |
autoSizeColumn(int column) 調整列寬,以適應的內容。 |
3 |
iterator() 此方法是rowIterator()的別名,以允許foreach循環 |
4 |
addHyperlink(XSSFHyperlink hyperlink) #註冊超鏈接的集合中的超連結此工作表格上 |
對於此類的其餘的方法,請參閱完整的API在:
https:// poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.
這是在org.apache.poi.ss.usermodel套件的介面。它是用於一排的電子表格的高層表示。它是代表了POI庫的行所有類別的超介面。
這是在org.apache.poi.xssf.usermodel套件的類別。它實現了Row接口,因此它可以在電子表格中創建行。下面列出的是這個類別在方法和建構子。
S.No. | #描述 |
---|---|
1 |
createCell(int columnIndex) #建立新單元行並傳回。 |
2 |
setHeight(short height) 設定短單位的高度。 |
對於此類的其餘的方法,請參考如下連結:
https://poi.apache.org/apidocs/org/apache/poi /xssf/usermodel/XSSFRow.html
這是在org.apache.poi.ss.usermodel套件的介面。它是代表了單元在電子表格中的行中的所有類別的超介面。
單元格可以使用各種屬性,例如空白,數字,日期,錯誤等單元格被添加到一個行之前應具有(基於0)自己的編號。
這是在 org.apache.poi.xssf.usermodel 套件的類別。它實現了單元格介面。它是單元在電子表格中的行的一個高層次的表示。
現在我用Java實作讀取excel表格
程式碼實作
public static void excel() throws Exception { //用流的方式先读取到你想要的excel的文件 FileInputStream fis=new FileInputStream(new File(System.getProperty("user.dir")+"/src/excel.xls")); //解析excel POIFSFileSystem pSystem=new POIFSFileSystem(fis); //获取整个excel HSSFWorkbook hb=new HSSFWorkbook(pSystem); System.out.println(hb.getNumCellStyles()); //获取第一个表单sheet HSSFSheet sheet=hb.getSheetAt(0); //获取第一行 int firstrow= sheet.getFirstRowNum(); //获取最后一行 int lastrow= sheet.getLastRowNum(); //循环行数依次获取列数 for (int i = firstrow; i list=new ArrayList(); for (int j = firstcell; j <lastcell>0) { user.setUsername(list.get(1)); user.setPassword(list.get(2)); } BaseDAO dao=new BaseDAO(); dao.save(user); System.out.println(); } } fis.close(); }</lastcell>
以上是Java讀取excel的詳細內容。更多資訊請關注PHP中文網其他相關文章!