Java實現讀取及生成Excel文件的方法
更新時間:2017年12月20日 13:56:50 作者:xxiaowen
這篇文章主要介紹了Java實現讀取及生成Excel文件的方法,結合實例形式分析了java通過引入第三方jar包poi-3.0.1-FINAL-20070705.jar實現針對Excel文件的讀取及生成功能,需要的朋友可以參考下
本文實例講述了Java實現讀取及生成Excel文件的方法。分享給大家供大家參考,具體如下:
一、讀取Excel文件
需要先下載poi-3.0.1-FINAL-20070705.jar(點擊此處本站下載poi-3.0.1-FINAL-20070705.jar。)
ExcelExamRead.java
import java.io.File; import java.io.FileInputStream; import java.io.IOException; 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 ExcelExamRead { /** 讀Excel文件內容 */ public void showExcel(String excelName) { File file = new File(excelName); FileInputStream in = null; try { // 創(chuàng)建對Excel工作簿文件的引用 in = new FileInputStream(file); HSSFWorkbook hwb = new HSSFWorkbook(in); HSSFSheet sheet = hwb.getSheet("myFirstExcel");// 根據指定的名字來引用此Excel中的有效工作表 // 讀取Excel 工作表的數據 System.out.println("下面是Excel文件" + file.getAbsolutePath() + "的內容:"); HSSFRow row = null; HSSFCell cell = null; int rowNum = 0; // 行標 int colNum = 0; // 列標 for (; rowNum < 9; rowNum++) { // 獲取第rowNum行 row = sheet.getRow((short) rowNum); for (colNum = 0; colNum < 5; colNum++) { cell = row.getCell((short) colNum);// 根據當前行的位置來創(chuàng)建一個單元格對象 System.out.print(cell.getStringCellValue() + "\t");// 獲取當前單元格中的內容 } System.out.println(); // 換行 } in.close(); } catch (Exception e) { System.out .println("讀取Excel文件" + file.getAbsolutePath() + "失?。? + e); } finally { if (in != null) { try { in.close(); } catch (IOException e1) { } } } } public static void main(String[] args) { ExcelExamRead excel = new ExcelExamRead(); String excelName = "D:/ExcelExamRead.xls"; excel.showExcel(excelName); } }
二、生成Excel文件
ExcelExamWrite.java:
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.Region; //創(chuàng)建Excel文件 public class ExcelExamWrite { // 新建一個Excel文件,里面添加5行5列的內容,另外添加一個合并2行5列的大單元格以及一個合并2行1列的5個合并單元格。 public void createExcel(String fileName) { File file = new File(fileName);// 創(chuàng)建excel文件對象 FileOutputStream fOut = null; try { // 創(chuàng)建一個新的HSSFWorkbook對象 HSSFWorkbook workbook = new HSSFWorkbook(); // 創(chuàng)建一個Excel的工作表,可以指定工作表的名字 HSSFSheet sheet = workbook.createSheet("myFirstExcel"); // 創(chuàng)建字體,紅色、粗體 HSSFFont font = workbook.createFont(); font.setColor(HSSFFont.COLOR_RED); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); HSSFFont font1 = workbook.createFont(); // 創(chuàng)建字體,黑色、非粗體 font1.setColor(HSSFFont.COLOR_NORMAL); font1.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 創(chuàng)建單元格的格式,如居中、左對齊等 HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平方向上居中對齊 // 垂直方向上居中對齊 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); cellStyle.setFont(font); // 設置字體 HSSFCellStyle cellStyle1 = workbook.createCellStyle(); cellStyle1.setAlignment(HSSFCellStyle.ALIGN_LEFT); cellStyle1.setFont(font1); // 下面將建立一個4行3列的表。第一行為表頭。 int rowNum = 0;// 行標 int colNum = 0;// 列標 // 建立表頭信息 HSSFRow row = sheet.createRow((short) rowNum); // 在索引0的位置創(chuàng)建行 HSSFCell cell = null; // 單元格 for (colNum = 0; colNum < 5; colNum++) { // 在當前行的colNum列上創(chuàng)建單元格 cell = row.createCell((short) colNum); // 定義單元格為字符類型,也可以指定為日期類型、數字類型 cell.setCellType(HSSFCell.CELL_TYPE_STRING); // 定義編碼方式,為了支持中文,這里使用了ENCODING_UTF_16 cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellStyle(cellStyle); // 為單元格設置格式 cell.setCellValue("表頭-第" + (colNum + 1) + "列"); // 添加內容至單元格 } rowNum++; for (; rowNum < 5; rowNum++) { // 新建第rowNum行 row = sheet.createRow((short) rowNum); for (colNum = 0; colNum < 5; colNum++) { // 在當前行的colNum位置創(chuàng)建單元格 cell = row.createCell((short) colNum); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellStyle(cellStyle1); cell.setCellValue("表體-第" + rowNum + "行第" + (colNum + 1) + "列"); } } // 合并單元格 // 先創(chuàng)建2行5列的單元格,然后將這些單元格合并為2個大單元格 rowNum = 5; for (; rowNum < 9; rowNum++) { row = sheet.createRow((short) rowNum); for (colNum = 0; colNum < 5; colNum++) { // 在當前行的colNum位置創(chuàng)建單元格 cell = row.createCell((short) colNum); } } // 建立第一個大單元格,高度為2,寬度為2 rowNum = 5; colNum = 0; Region region = new Region(rowNum, (short) colNum, (rowNum + 1), (short) (colNum + 4)); sheet.addMergedRegion(region); // 獲得第一個大單元格 cell = sheet.getRow(rowNum).getCell((short) colNum); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellStyle(cellStyle); cell.setCellValue("合并行單元格"); // 建立第二個大單元格,高度為2,寬度為3 rowNum = 7; for (colNum = 0; colNum < 5; colNum++) { region = new Region(rowNum, (short) colNum, (rowNum + 1), (short) (colNum)); sheet.addMergedRegion(region); // 獲得第二個大單元格 cell = sheet.getRow(rowNum).getCell((short) colNum); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellStyle(cellStyle); cell.setCellValue("合并列單元格"); } // 新建一輸出文件流 fOut = new FileOutputStream(file); // 將創(chuàng)建的內容寫到指定的Excel文件中 workbook.write(fOut); fOut.flush(); fOut.close();// 操作結束,關閉文件 System.out.println("Excel文件創(chuàng)建成功!\nExcel文件的存放路徑為:" + file.getAbsolutePath()); } catch (Exception e) { System.out.println("Excel文件" + file.getAbsolutePath() + "創(chuàng)建失敗\n其原因為:" + e); } finally { if (fOut != null) { try { fOut.close(); } catch (IOException e1) { } } } } public static void main(String[] args) throws Exception { ExcelExamWrite excel = new ExcelExamWrite(); String fileName = "e:/ExcelExamWrite.xls"; excel.createExcel(fileName); } }
更多關于java相關內容感興趣的讀者可查看本站專題:《Java操作Excel技巧總結》、《Java+MySQL數據庫程序設計總結》、《Java數據結構與算法教程》、《Java文件與目錄操作技巧匯總》及《Java操作DOM節(jié)點技巧總結》
希望本文所述對大家java程序設計有所幫助。
相關文章
詳解Spring?@Lazy注解為什么能破解死循環(huán)
這篇文章主要來和大家探討一下Spring中的@Lazy注解為什么能破解死循環(huán),文中的示例代碼講解詳細,具有一定的參考價值,需要的可以了解一下2023-07-07