1.说明:ExcelUtil主要用于获得单元格的数据和对对指定单元格中写入数据用!
相关代码如下:
1 package main.java; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.util.ArrayList; 7 import java.util.List; 8 9 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 10 import org.apache.poi.ss.usermodel.Row; 11 import org.apache.poi.ss.usermodel.Sheet; 12 import org.apache.poi.ss.usermodel.Workbook; 13 import org.apache.poi.xssf.usermodel.XSSFCell; 14 import org.apache.poi.xssf.usermodel.XSSFRow; 15 import org.apache.poi.xssf.usermodel.XSSFSheet; 16 import org.apache.poi.xssf.usermodel.XSSFWorkbook; 17 18 19 public class ExcleUtil { 20 private static XSSFSheet ExcelWSheet; 21 private static XSSFWorkbook ExcelWBook; 22 private static XSSFCell Cell; 23 private static XSSFRow Row; 24 private static String ExcelFilePath="C:\\TEST.xlsx"; 25 26 // 设定要设置的Excel的文件路径和Excel 中Sheet名; 27 // 在读/写Excel 的时候先要调用此方法 28 public static void setExcleFile(String FilePath, String sheetName) throws Exception { 29 FileInputStream ExcleFile; 30 try { 31 // 实例化Excle文件的FileInputStream 对象; 32 ExcleFile = new FileInputStream(FilePath); 33 // 实例化Excle文件的XSSFWorkbook 对象; 34 ExcelWBook = new XSSFWorkbook(ExcleFile); 35 /* 36 * 实例化XSSFSheet 对象,指定ExcelFile中的sheet名称,用于后续对sheet中行和列的操作; 37 * 38 */ 39 ExcelWSheet = ExcelWBook.getSheet(sheetName); 40 41 } catch (Exception e) { 42 e.getStackTrace(); 43 } 44 45 } 46 /* 47 * 读取excle文件指定单元格的函数 ; 48 * 49 */ 50 51 public static String getCell(int row, int col) throws Exception { 52 53 try { 54 // 通过函数参数指定单元格的行号和列,获取指定单元格的对象; 55 Cell = ExcelWSheet.getRow(row).getCell(col); 56 /* 57 * 1.如果单元格的类型为字符串类型,使用getStringCellValue();来获取单元格的内容; 58 * 2.如果单元格的类型为数字类型,使用getNumberricCellValue();来获取单元格的内容; 59 * 注意:getNumberricCellValue();返回的值为double类型,转为为字符串类型,必须在 60 * getNumberricCellValue();前面加上(" ")双引号,用于强制转换为String类型,不加双引号 61 * 则会抛错;double类型无法转换为String类型的异常; 62 * 63 */ 64 String CellData = Cell.getCellType() == XSSFCell.CELL_TYPE_STRING ? Cell.getStringCellValue() + "" 65 : String.valueOf(Math.round(Cell.getNumericCellValue())); 66 return CellData; 67 } catch (Exception e) { 68 e.getStackTrace(); 69 return ""; 70 } 71 72 } 73 /* 74 * 在Excle中执行单元格写入数据; 75 * 76 * 77 */ 78 79 public static void setCellData(int rownum, int colnum, String Result) throws Exception { 80 81 try { 82 // 获取excle文件的中行对象; 83 Row = ExcelWSheet.getRow(rownum); 84 // 如果单元格为空则返回null; 85 Cell = Row.getCell(colnum, Row.RETURN_BLANK_AS_NULL); 86 if (Cell == null) { 87 // 当单元格为空是则创建单元格 88 // 如果单元格为空无法调用单元格对象的setCellValue方法设定单元格的值 ; 89 Cell = Row.createCell(colnum); 90 // 创建单元格和后可以通过调用单元格对象的setCellValue方法设置单元格的值了; 91 Cell.setCellValue(Result); 92 } else { 93 // 单元格中有内容,则可以直接调用单元格对象的 setCellValue 方法来设置单元格的值; 94 Cell.setCellValue(Result); 95 } 96 FileOutputStream fileout = new FileOutputStream(ExcelFilePath); 97 // 将内容写到Excel文件中 ; 98 ExcelWBook.write(fileout); 99 // j调用flush方法强制刷新写入文件;100 fileout.flush();101 fileout.close();102 System.out.println("-----写入成功!------");103 } catch (Exception e) {104 System.out.println(e.getMessage() + e.getStackTrace());105 throw (e);106 }107 108 }109 110 public static void TangsetCellData(int RowNum, int ColNum, String Result) {111 try {112 // 获取行对象113 Row = ExcelWSheet.getRow(RowNum);114 // 如果单元格为空,则返回null115 Cell = Row.getCell(ColNum, Row.RETURN_BLANK_AS_NULL);116 if (Cell == null) {117 // 当单元格对象是Null时,则创建单元格118 // 如果单元格为空,无法直接调用单元格的setCellValue方法设定单元格的值119 Cell = Row.createCell(RowNum);120 // 调用setCellValue方法设定单元格的值121 Cell.setCellValue(Result);122 } else {123 // 单元格中有内容,则可以直接调用seCellValue方法设定单元格的值124 Cell.setCellValue(Result);125 }126 // 实例化写入Excel文件的文件输出流对象127 FileOutputStream fileOut = new FileOutputStream(ExcelFilePath);128 // 将内容写入Excel中129 ExcelWBook.write(fileOut);130 fileOut.flush();131 fileOut.close();132 } catch (Exception e) {133 // TODO: handle exception134 e.printStackTrace();135 }136 }137 138 // 从excel 文件中获取测试数据的静态方法;139 public static Object[][] getTestData(String excelFilePath, String sheetName) throws Exception {140 // 根据参数传入的数据文件路径和文件名称,组合出Excel 数据文件的绝对路径141 // 声明一个文件;142 File file = new File(excelFilePath);143 // 创建FileInputStream 来读取Excel文件内容;144 FileInputStream inputStream = new FileInputStream(file);145 // 声明Workbook 对象;146 Workbook workbook = null;147 // 获取文件名参数的扩展名,判断是“.xlsx” 还是 “.xls” ;148 String fileExtensionName = excelFilePath.substring(excelFilePath.indexOf('.'));149 if (fileExtensionName.equals(".xlsx")) {150 workbook = new XSSFWorkbook(inputStream);151 152 } else if (fileExtensionName.equals(".xls")) {153 workbook = new HSSFWorkbook(inputStream);154 155 }156 Sheet sheet = workbook.getSheet(sheetName);157 // 获取Excel 数据文件Sheet1 中数据的行数,getLastRowNum 方法获取数据的最后一行的行号,158 // getFistRowNum 获取第一行 最后一行减去第一行就是总行数了159 // 注意excle 的行和列都是从0开始的;160 int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();161 // 创建名为records 的List对象来存储从Excel文件中读取的数据;162 List