上一篇為大家介紹了通過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:/VEVb/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:/VEVb/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文件。
如有錯誤,還望指正。謝謝
新聞熱點
疑難解答