標籤:
上一篇為大家介紹了通過xls.jar的方式產生Excel的方法,本篇就為大家再介紹一下通過poi方式實現Excel檔案的讀寫操作,內容很簡單,代碼注釋很清晰。
1、產生Excel檔案:
import java.io.File;import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class poi_write { public static void main(String[] args) { final String [] str = {"id", "name", "sex"}; //建立Excel工作薄 HSSFWorkbook workbook = new HSSFWorkbook(); //建立Excel工作表 HSSFSheet sheet = workbook.createSheet(); //建立第一行 HSSFRow row = sheet.createRow(0); HSSFCell cell = null; //添加表頭 for (int i = 0; i < str.length; i++) { cell = row.createCell(i); cell.setCellValue(str[i]); } //追加資料 for (int i = 1; i <= 10; i++) { HSSFRow rows = sheet.createRow(i); HSSFCell cell_id = rows.createCell(0); cell_id.setCellValue(i+""); HSSFCell cell_name = rows.createCell(1); cell_name.setCellValue("name:"+i); HSSFCell cell_sex = rows.createCell(2); cell_sex.setCellValue("男"); } //檔案儲存路徑 File file = new File("E:/cnblogs/poi_text.xls"); try{ if(!file.exists()){ file.createNewFile(); } FileOutputStream fileOut = new FileOutputStream(file);//建立一個檔案輸出資料流對象 workbook.write(fileOut); fileOut.close();//關閉輸出資料流對象 }catch (Exception e) { e.printStackTrace(); } System.out.println("Excel檔案已產生"); } }
2、讀取Excel檔案:
import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class poi_reading { public static void main(String[] args) { final File file = new File("E:/cnblogs/poi_text.xls"); if(file.exists()){ try { HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file)); //workbook.getSheet("Sheet0");獲得指定的工作表 //HSSFSheet sheet = workbook.getSheet("Sheet0"); //workbook.getSheetAt(0);預設獲得第一個工作表 HSSFSheet sheet = workbook.getSheetAt(0); int firstRowNum = 0; //獲得當前sheet最後一行行號 int lastRowNum = sheet.getLastRowNum(); for (int i = firstRowNum; i <= lastRowNum; i++) { HSSFRow row = sheet.getRow(i); //獲得當前行最後儲存格列號 int lastCellNum = row.getLastCellNum(); for (int j = 0; j < lastCellNum; j++) { HSSFCell cell = row.getCell(j); String value = cell.getStringCellValue(); System.out.print(value+" "); } System.out.println(""); } } catch (IOException e) { e.printStackTrace(); } }else{ System.out.println("讀取檔案不存在"); } } }
好了,基本的方法已經為大家介紹完畢,更好的效果展示就靠大家自己摸索了。
不知道大家發現一個問題沒?我們產生的Excl檔案都是.xls結尾,.xls是office97-2003的版本,而對於2007以後的版本則是以.xlsx結尾。那如何產生高版本的Excel呢?我們不能僅僅是修改一下File檔案的尾碼名,我們這裡需要使用XSSFWorkbook進行建立workbook,然後把剩餘的HSSF開頭去掉就可以了。不過在這裡需要說明的就是,我們不知道使用者使用的是低版本還是高版本,所以我們建議大家都使用HSSFWorkbook來進行建立以.xls結尾的Excel檔案。
如有錯誤,還望指正。謝謝
JAVA實現Excel的讀寫--poi