读取表
03 版本的读方法
/**
* 03 版本的 读
* @throws IOException
*/
public static void testRead03() throws IOException {
// 路径
String PATH = "F:\\dome\\dome-one\\myBatismls\\intercept";
/** 获取文件流 */
FileInputStream fileInputStream = new FileInputStream(PATH + "test.xls");
/** 创建一个工作薄 */
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileInputStream);
/** 得到工作表 */
HSSFSheet sheetAt = hssfWorkbook.getSheetAt(0);
/** 得到行 */
Row row = sheetAt.getRow(0);
/** 得到列 */
Cell cell = row.getCell(0);
/** 读取值得时候, 一定要注意类型 */
System.out.println(cell.getStringCellValue());
fileInputStream.close();
}
07 版本的读方法
/**
* 03 版本的 读
* @throws IOException
*/
public static void testRead03() throws IOException {
// 路径
String PATH = "F:\\dome\\dome-one\\myBatismls\\intercept";
/** 获取文件流 */
FileInputStream fileInputStream = new FileInputStream(PATH + "test.xls");
/** 创建一个工作薄 */
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileInputStream);
/** 得到工作表 */
XSSFSheet sheetAt = xssfWorkbook.getSheetAt(0);
/** 得到行 */
Row row = sheetAt.getRow(0);
/** 得到列 */
Cell cell = row.getCell(0);
/** 读取值得时候, 一定要注意类型 */
System.out.println(cell.getStringCellValue());
fileInputStream.close();
}
实战
表格内容:
标题1 |
... |
标题n |
内容1 |
... |
内容n |
... |
... |
... |
java 代码
/**
* 导入数据实战
*/
public void actual( FileInputStream fileInputStream ) throws Exception{
// 路径
String PATH = "F:\\dome\\dome-one\\myBatismls\\intercept";
/** 获取文件流 */
//FileInputStream fileInputStream = new FileInputStream(PATH + "test.xls");
/** 创建一个工作薄, 使用 excel 能操作的这边他都可以操作 */
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileInputStream);
/** 得到工作表 */
HSSFSheet sheetAt = hssfWorkbook.getSheetAt(0);
/** 行 */
// 获取标题
HSSFRow rowTitle = sheetAt.getRow(0);
if (rowTitle != null){
// 获取有数据的的列的数量
int cellCount = rowTitle.getPhysicalNumberOfCells();
for (int cellNum = 0; cellNum < cellCount; cellNum++){
HSSFCell cell = rowTitle.getCell(cellNum);
if (cell != null){
int cellType = cell.getCellType();
String cellValue = cell.getStringCellValue();
System.err.println(cellValue + " | ");
}
}
System.err.println();
}
/**
* 获取 表中的内容
*/
/** 行数 */
int physicalNumberOfCells = rowTitle.getPhysicalNumberOfCells();
for (int rowNum = 1; rowNum < physicalNumberOfCells; rowNum++ ){
HSSFRow rowData = sheetAt.getRow(rowNum);
if (rowData != null){
// 获取有数据的的列的数量
int cellCount = rowTitle.getPhysicalNumberOfCells();
for (int cellNum = 0; cellNum < cellCount; cellNum++ ){
HSSFCell cell = rowData.getCell(cellNum);
/** 匹配列的数据类型 */
if (cell != null){
// 获取数据类型
int cellType = cell.getCellType();
String cellvalue = "";
switch (cellType){
case HSSFCell.CELL_TYPE_STRING: // 字符串
System.err.println("[String]");
cellvalue = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN: // 布尔类型
System.err.println("[boolean]");
cellvalue = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK: // 空
System.err.println("[blank]");
break;
case HSSFCell.CELL_TYPE_NUMERIC: // 数字 (日期, 普通数字)
System.err.println("[number]");
if (HSSFDateUtil.isCellInternalDateFormatted(cell)){
// 日期
System.err.println("[日期]");
Date dateCellValue = cell.getDateCellValue();
cellvalue = new DateTime(dateCellValue).toString("yyyy-MM-dd");
}else {
// 普通数字
System.err.println("[转换为字符串输出]");
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cellvalue = cell.toString();
}
break;
case HSSFCell.CELL_TYPE_ERROR: // 错误
System.err.println("[数据类型错误]");
break;
}
System.out.println(cellvalue);
}
}
}
}
// 关掉流
fileInputStream.close();
}
注意: 数据类型的转换
计算公式 (用的时候 再补充)
/**
* 计算公式
* @throws Exception
*/
public void testFormula() throws Exception{
// 路径
String PATH = "F:\\dome\\dome-one\\myBatismls\\intercept";
/** 获取文件流 */
FileInputStream fileInputStream = new FileInputStream(PATH + "test.xls");
Workbook workbook = new HSSFWorkbook(fileInputStream);
Sheet sheetAt = workbook.getSheetAt(0);
Row row = sheetAt.getRow(1);
Cell cell = row.getCell(4);
// 拿到计算公式
FormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook) workbook);
// 输出单元格的内容
int cellType = cell.getCellType();
switch (cellType){
case Cell.CELL_TYPE_FORMULA: // 公式
String cellFormula = cell.getCellFormula();
System.out.println(cellFormula);
// 计算
CellValue evaluate = formulaEvaluator.evaluate(cell);
String s = evaluate.formatAsString();
System.err.println(s);
}
}