excel类型

excel分为03版本和07版本

03版本 new HSSFWorkbook(); 优点:速度快 缺点:只能写入65536行数据 文件类型:.xls07版本 new XSSFWorkbook(); 优点:不限制写入数量 缺点:容易造成内存溢出(OOM),速度慢 文件类型:.xlsx07加速版 new SXSSFWorkbook(); 在写入过程中会产生临时文件,需要手动清除:((SXSSFWorkbook)wb).dispose(); 文件类型:.xlsx

依赖

org.apache.poi

poi

3.12

org.apache.poi

poi-ooxml

3.12

写入

private static void write(){

// 创建一个工作簿

Workbook wb = new HSSFWorkbook();

// 创建一个工作表

Sheet sheet = wb.createSheet("sheet页名称");

// 创建一行

Row row = sheet.createRow(0);

// 创建一个单元格

Cell cell = row.createCell(0);

// 生成一张表

FileOutputStream outputStream = new FileOutputStream(PATH + "demo.xls");

wb.write(outputStream);

}

读取

private static void read(){

FileInputStream inputStream = new FileInputStream(PATH + "demo.xls");

Workbook wb = new HSSFWorkbook(inputStream);

Sheet sheet = wb.getSheetAt(0);

Row row = sheet.getRow(0);

Cell cell = row.getCell(0);

// 获取sheet页总行数

int rowCount = sheet.getPhysicalNumberOfRows();

// 获取一行的列数

int cellCount = row.getPhysicalNumberOfCells();

// 获取单元格的数据类型

int cellType = cell.getCellType();

switch (cellType) {

case HSSFCell.CELL_TYPE_STRING:cell.getStringCellValue();break;// 读字符串

case HSSFCell.CELL_TYPE_BOOLEAN:cell.getBooleanCellValue();break;// 读布尔值

case HSSFCell.CELL_TYPE_FORMULA:cell.getCellFormula();break;// 读公式

case HSSFCell.CELL_TYPE_BLANK:break;

case HSSFCell.CELL_TYPE_ERROR:break;

case HSSFCell.CELL_TYPE_NUMERIC:

if (HSSFDateUtil.isCellDateFormatted(cell)) {

cell.getDateCellValue();// 读日期

} else {

// 为防止数字过长,将数字以字符串的格式输出

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.getStringCellValue();

}

break;

}

}

通用版-写入

private void autoWrite(){

FileOutputStream outputStream = null;

try {

创建工作簿

HSSFWorkbook wb = new HSSFWorkbook();

创建一种字体

HSSFFont font = wb.createFont();

// 粗体

font.setBold(true);

// 设置字号

font.setFontHeightInPoints((short) 14);

创建一种风格

HSSFCellStyle style = wb.createCellStyle();

// 设置边框:双线

style.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);// 上

style.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);// 下

style.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);// 左

style.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);// 右

// 顶端对齐

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);

// 垂直居中

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

// 水平居中

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// 设置字体

style.setFont(font);

// 设置背景颜色

style.setFillBackgroundColor(HSSFColor.GREY_40_PERCENT.index);

// 设置前景颜色:excel一般使用前景色

style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);

// 设置模式

style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

// 设置自动换行

style.setWrapText(true);

创建sheet页

HSSFSheet sheet = wb.createSheet("sheet页名称");

// 设置某列为自动列宽

sheet.autoSizeColumn(0);

// 设置默认列宽

sheet.setDefaultColumnWidth(20);

// 设置列宽(列索引,字节长度 * 2 * 256)

sheet.setColumnWidth(0,4 * 2 * 256);

// 合并单元格

sheet.addMergedRegion(new Region(0,(short)1,0,(short)2));

创建一行

HSSFRow row = sheet.createRow(0);

// 设置行高

row.setHeight((short) 1000);

创建一个单元格

HSSFCell cell = row.createCell(0);

// 设置单元格风格

cell.setCellStyle(style);

cell.setCellValue(new HSSFRichTextString("支持富文本"));

生成文件

outputStream = new FileOutputStream(PATH + "demo.xls");

wb.write(outputStream);

outputStream.flush();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (outputStream != null) {

try {

outputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

计算公式

// 创建公式计算器

FormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook) wb);

// 执行计算

CellValue evaluate = formulaEvaluator.evaluate(cell);

evaluate.formatAsString();

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。