一、xls读-03和07
1、03版本
文件:商品表-03.xls(可以下载文件读取,也可以自己新建一个这样的表格,注意后缀是xls,注意读取时文件存放的路径)
商品名称 | 商品条码 | 商品PV |
蓝莓礼盒 | PV700066 | 0.7 |
椴树雪蜜(500g*2) | PV700011 | 0.7 |
玥璜贡米1kg*5 | PV700001 | 0.7 |
/**
* 03读取测试
* @throws Exception
*/
@Test
public void testRead03() throws Exception{
InputStream is = new FileInputStream("d:/商品表-03.xls");
Workbook workbook = new HSSFWorkbook(is);
Sheet sheet = workbook.getSheetAt(0);
// 读取第一行第一列
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
// 输出单元内容
System.out.println(cell.getStringCellValue());
// 操作结束,关闭文件
is.close();
}
2、07版本
文件:商品表-07.xlsx(可以下载文件读取,也可以自己新建一个这样的表格,注意后缀是xlsx)
商品名称 | 商品条码 | 商品PV |
蓝莓礼盒 | PV700066 | 0.7 |
椴树雪蜜(500g*2) | PV700011 | 0.7 |
玥璜贡米1kg*5 | PV700001 | 0.7 |
/**
* 07读取测试
* @throws Exception
*/
@Test
public void testRead07() throws Exception{
InputStream is = new FileInputStream("d:/商品表-07.xlsx");
Workbook workbook = new XSSFWorkbook(is);
Sheet sheet = workbook.getSheetAt(0);
// 读取第一行第一列
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
// 输出单元内容
System.out.println(cell.getStringCellValue());
// 操作结束,关闭文件
is.close();
}
二、读取不同类型的数据
1、读取不同的数据类型
文件:会员消费商品明细表.xls
文件内容:
序号 | 卡号 | 持卡人 | 手机号 | 消费日期 | 小票号 | 商品编号 | 商品条码 | 商品名称 | 商品单位 | 原价 | 销售价 | 销售数量 | 销售金额 | 优惠金额 | 是否上架 |
1 | 100088 | 小草 | 13766816630 | 2018/10/10 | 0000201510200146 | PV700011 | PV700011 | 椴树雪蜜(500g*2) | 瓶 | 200.5 | 1000 | 1.0 | 900 | 100 | TRUE |
2 | 100088 | 小草 | 13766816630 | 2018/10/10 | 0000201510200146 | PV700005 | PV700005 | 精品小米500g | 盒 | 368.18 | 20000 | 1.0 | 20000 |
| FALSE |
/**
* 读取不同的数据类型
* @throws Exception
*/
@Test
public void testCellType() throws Exception {
InputStream is = new FileInputStream("d:/会员消费商品明细表.xls");
Workbook workbook = new HSSFWorkbook(is);
Sheet sheet = workbook.getSheetAt(0);
// 读取标题所有内容
Row rowTitle = sheet.getRow(0);
if (rowTitle != null) {// 行不为空
// 读取cell
int cellCount = rowTitle.getPhysicalNumberOfCells();
for (int cellNum = 0; cellNum < cellCount; cellNum++) {
Cell cell = rowTitle.getCell(cellNum);
if (cell != null) {
int cellType = cell.getCellType();
String cellValue = cell.getStringCellValue();
System.out.print(cellValue + "|");
}
}
System.out.println();
}
// 读取商品列表数据
int rowCount = sheet.getPhysicalNumberOfRows();
for (int rowNum = 1; rowNum < rowCount; rowNum++) {
Row rowData = sheet.getRow(rowNum);
if (rowData != null) {// 行不为空
// 读取cell
int cellCount = rowTitle.getPhysicalNumberOfCells();
for (int cellNum = 0; cellNum < cellCount; cellNum++) {
System.out.print("【" + (rowNum + 1) + "-" + (cellNum + 1) + "】");
Cell cell = rowData.getCell(cellNum);
if (cell != null) {
int cellType = cell.getCellType();
//判断单元格数据类型
String cellValue = "";
switch (cellType) {
case HSSFCell.CELL_TYPE_STRING://字符串
System.out.print("【STRING】");
cellValue = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN://布尔
System.out.print("【BOOLEAN】");
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK://空
System.out.print("【BLANK】");
break;
case HSSFCell.CELL_TYPE_NUMERIC:
System.out.print("【NUMERIC】");
//cellValue = String.valueOf(cell.getNumericCellValue());
//判断是否是日期
if (HSSFDateUtil.isCellDateFormatted(cell)) {//日期
System.out.print("【日期】");
Date date = cell.getDateCellValue();
cellValue = new DateTime(date).toString("yyyy-MM-dd");
} else {
// 不是日期格式,则防止当数字过长时以科学计数法显示
System.out.print("【转换成字符串】");
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cellValue = cell.toString();
}
break;
case Cell.CELL_TYPE_ERROR:
System.out.print("【数据类型错误】");
break;
}
System.out.println(cellValue);
}
}
}
}
is.close();
}
测试结果:
2、计算公式的读取和计算
文件:计算公式.xls
文件内容:
/**
* 计算公式的读取和计算
* @throws Exception
*/
@Test
public void testFormula() throws Exception{
InputStream is = new FileInputStream("d:/计算公式.xls");
Workbook workbook = new HSSFWorkbook(is);
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://2
//得到公式SUM(A2:A4)
String formula = cell.getCellFormula();
System.out.println(formula);
CellValue evaluate = formulaEvaluator.evaluate(cell);
//String cellValue = String.valueOf(evaluate.getNumberValue());
String cellValue = evaluate.formatAsString();
System.out.println(cellValue);
break;
}
}
测试结果: