java读取Excel
采用poi,这里有个知识点,03版本和07版本的Excel是有区别的,03的最多只有65536行,07的无限制
读取03版本的Excel,后缀.xls
读取07版本的Excel,后缀.xlsx
public class ExcelReadTest {
String PATH = "你的公共路径保存文件啥的";
/**
* 读取03版本的Excel表
*/
@Test
public void testRead03() throws Exception {
//获取文件流
FileInputStream fileInputStream = new FileInputStream(PATH + "03版本的统计表03.xls");
//1.创建一个工作簿,使用Excel能操作的,在这都能操作
Workbook workbook = new HSSFWorkbook(fileInputStream);
//2.拿表.可以根据名字获取,有AT的是根据下表获取
Sheet sheet = workbook.getSheetAt(0);
//获取第几行
Row row = sheet.getRow(1);
//获取列
Cell cell = row.getCell(1);
//获取值,获取字符串
// System.out.println(cell.getStringCellValue());
//获取数字
// System.out.println(cell.getNumericCellValue());
// System.out.println(cell.getDateCellValue());
//流关闭流
fileInputStream.close();
}
/**
* 读取07版本的Excel表
*/
@Test
public void testRead07() throws Exception {
//获取文件流
FileInputStream fileInputStream = new FileInputStream(PATH + "07版本的统计表07.xlsx");
//1.创建一个工作簿,使用Excel能操作的,在这都能操作,把流传进去
Workbook workbook = new XSSFWorkbook(fileInputStream);
//2.拿表.可以根据名字获取,有AT的是根据下表获取
Sheet sheet = workbook.getSheetAt(0);
//获取第几行
Row row = sheet.getRow(1);
//获取列
Cell cell = row.getCell(1);
//获取值,获取字符串
System.out.println(cell.getStringCellValue());
//获取数字
// System.out.println(cell.getNumericCellValue());
// System.out.println(cell.getDateCellValue());
//流关闭流
fileInputStream.close();
}
}
读取Excel的计算公式
/**
* Excel计算公式
* @throws Exception
*/
@Test
public void testFormula() throws Exception {
FileInputStream inputStream = new FileInputStream(PATH + "公式.xls");
Workbook workbook = new HSSFWorkbook(inputStream);
Sheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(4);//得到计算公式位置
Cell cell = row.getCell(0);
//拿到计算公式
FormulaEvaluator FormulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook) workbook);
//输出单元格的内容
int cellType = cell.getCellType();
switch (cellType){
case Cell.CELL_TYPE_FORMULA://公式
String formula = cell.getCellFormula();//得到公式
System.out.println(formula);
//计算
CellValue evaluate = FormulaEvaluator.evaluate(cell);//直接计算格子里面的公式
String cellValue = evaluate.formatAsString();//打印值
System.out.println(cellValue);
break;
}
}