Java使用POI操作Excel

1. POI操作Excel

1.1. 依赖

org.apache.poi

poi

4.1.0

org.apache.poi

poi-ooxml

4.1.0

org.apache.poi

poi-ooxml-schemas

4.1.0

1.2. 读取Excel

1.2.1. Excel文件内容

1.2.2. 代码

/**

* 读取excel

*/

public static void readExcel() {

InputStream inputStream = null;

XSSFWorkbook xssfWorkbook = null;

try {

String past = "/操作excel.xlsx";

inputStream = new FileInputStream(past);

xssfWorkbook = new XSSFWorkbook(inputStream);

//获取sheet的个数

int numberOfSheets = xssfWorkbook.getNumberOfSheets();

//获取指定的sheet

System.out.println(numberOfSheets);

//通过指定名称获取

XSSFSheet sheet = xssfWorkbook.getSheet("笔记本");

//通过下标获取

XSSFSheet sheetAt = xssfWorkbook.getSheetAt(1);

if (sheetAt != null) {

//最后一行有数据的

int lastRowNum = sheetAt.getLastRowNum();

XSSFRow row;

short lastCellNum;

XSSFCell cell;

for (int i = 0; i <= lastRowNum; i++) {

//获取指定行

row = sheetAt.getRow(i);

if (row == null) {

continue;

}

//最后一列有数据的

lastCellNum = row.getLastCellNum();

for (int j = 0; j <= lastCellNum; j++) {

cell = row.getCell(j);

if (cell == null) {

continue;

}

//数据类型

CellType cellType = cell.getCellType();

//字符串

if (CellType.STRING == cellType) {

System.out.println(cell.toString());

}

//数字

else if (CellType.NUMERIC == cellType) {

try {

System.out.println(cell.getDateCellValue());

} catch (Exception e) {

System.out.println(cell.toString());

}

}

//……

else {

System.out.println(cell.toString());

}

}

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (inputStream != null) {

try {

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

1.2.3. 控制台输出结果

2

便签名称

便签分类

创建时间

创建人

拥有人

小明的便签

学习便签

Tue Sep 03 00:00:00 CST 2019

小明

小明

小明的个人便签

个人便签

Sun Sep 08 00:00:00 CST 2019

小明

小明

1.3. 生成excel

1.3.1. 代码

/**

* 生成excel

*/

public static void creatExcel() {

XSSFWorkbook xssfWorkbook = new XSSFWorkbook();

//创建一个sheet

XSSFSheet sheet1 = xssfWorkbook.createSheet("第一个新建的sheet");

//设置高度和宽度,也可以每行每列单独分开设置

//参数为字符个数

sheet1.setDefaultColumnWidth(20);

sheet1.setDefaultRowHeight((short) (33 * 20));

//第二个参数为字符宽度的1/256

sheet1.setColumnWidth(5, 30 * 256);

//设置单元格样式

XSSFCellStyle cellStyle = xssfWorkbook.createCellStyle();

// 字体样式

Font fontStyle = xssfWorkbook.createFont();

fontStyle.setBold(true);

// 字体

fontStyle.setFontName("等线");

// 大小

fontStyle.setFontHeightInPoints((short) 11);

// 将字体样式添加到单元格样式中

cellStyle.setFont(fontStyle);

//水平居中

cellStyle.setAlignment(HorizontalAlignment.CENTER);

//垂直居中

cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

//设置 单元格填充色

DefaultIndexedColorMap defaultIndexedColorMap = new DefaultIndexedColorMap();

XSSFColor clr = new XSSFColor(defaultIndexedColorMap);

byte[] bytes = {

(byte) 217,

(byte) 217,

(byte) 217

};

clr.setRGB(bytes);

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

cellStyle.setFillForegroundColor(clr);

//设置单元格不为锁定,可编辑,反是用了这个样式的都可编辑

cellStyle.setLocked(false);

//锁定整个sheet不可编辑

sheet1.protectSheet("1231312");

//创建一行数据

XSSFRow row;

XSSFCell cell;

row = sheet1.createRow(0);

cell = row.createCell(0);

//设值

cell.setCellValue("2");

//合并单元格

CellRangeAddress cra = new CellRangeAddress(1, 1, 0, 3); // 起始行, 终止行, 起始列, 终止列

sheet1.addMergedRegion(cra);

//设置合并单元格的样式

// 使用RegionUtil类为合并后的单元格添加边框

// 下边框

RegionUtil.setBorderBottom(BorderStyle.MEDIUM_DASHED, cra, sheet1);

// 左边框

RegionUtil.setBorderLeft(BorderStyle.MEDIUM_DASHED, cra, sheet1);

row = sheet1.getRow(1);

//设置合并单元格内的文本样式

//但这个单元格的边框样式会覆盖上面设置的合并单元格的样式

CellUtil.getCell(row, 0).setCellStyle(cellStyle);

//设置单个单元格的样式

row = sheet1.createRow(2);

cell = row.createCell(0);

cell.setCellStyle(cellStyle);

//设置数据校验

//序列校验

String[] strArray = {

"星期一",

"星期二",

"星期三"

};

XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) sheet1);

XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper.createExplicitListConstraint(strArray);

CellRangeAddressList addressList = new CellRangeAddressList(3, 3, 0, 2);

XSSFDataValidation validation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, addressList);

//显示报错提示框

validation.setShowErrorBox(true);

validation.createErrorBox("错误提示", "只能选择指定的内容!");

//设置单元格右侧显示剪头符号,显示可用的选项,默认为true

validation.setSuppressDropDownArrow(true);

//显示提示信息

validation.setShowPromptBox(true);

validation.createPromptBox("提示信息", "请选择星期填入!");

sheet1.addValidationData(validation);

//保护工作薄不可被修改

xssfWorkbook.lockStructure();

//这个不知道有啥用

xssfWorkbook.lockRevision();

//锁定excel的窗口大小,不能无限制的横向,纵向拉伸。

xssfWorkbook.lockWindows();

xssfWorkbook.createSheet("第二个人sheet");

OutputStream outputStream = null;

try {

outputStream = new FileOutputStream("/创建excel.xlsx");

xssfWorkbook.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();

}

}

}

}

1.3.2. 生成excel文件内容

execle java,Java使用POI操作Excel相关推荐

  1. java 中的poi_Java中使用POI操作ExceL的读与

    1.Java中使用POI操作ExceL的读与写 ​直接给代码 1.1导入依赖 org.apache.poi poi 3.10-FINAL org.apache.poi poi-ooxml 3.10-F ...

  2. Java - Poi 操作 Excel

    Java - Poi 操作 Excel 关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 注意 XSSFWorkbook 对象是操作 .xlsx 格式的表格 HS ...

  3. java apache.poi_Java利用apache的POI操作Excel

    最近在写一些报表的活,顺便总结下...第一篇博文,希望多多指教. 项目中经常会设计到一些数据的报表问题,目前java中操作Excel的插件也有很多 ,我说下用apache的POI操作Excel的方法. ...

  4. java使用poi操作excel删除一整行

    java使用poi操作excel删除一整行 需求1:删除excel表格第4行 代码示例: sheet.shiftRows(4, sheet.getLastRowNum(),-1); 第一个参数为行数( ...

  5. java使用poi操作excel(读、写)

    摘要: Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2007 ...

  6. java excel 边框_【web开发】☆★之利用POI操作Excel表格系列教程【9】单元格边框处理...

    [web开发]☆★之利用POI操作Excel表格系列教程[9]单元格边框处理 package csg.xiaoye.poidemo; import java.io.FileOutputStream; ...

  7. Java使用poi操作excel注意事项

    Java使用poi操作excel注意事项 1.如果只需要获取sheet信息,用流模式打开文件即可获取,消耗内存少 2.上传的文件需要校验,防止Excel包含异常的缓存文件,缓存文件可能会有几百兆,会瞬 ...

  8. Java实战—POI操作Excel文档、读取、写入、合并单元格

    一.POI项目简介 POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:http: ...

  9. JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls)

    JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls) *** POI的结构: ---*HSSF - 提供读写Microsoft Excel格式档案的功能. ---*XSSF - ...

最新文章

  1. [JS,CSS] - CSS圆角框组件
  2. css3.0动画,CSS3.0实现霓虹灯按钮动画特效的示例代码
  3. 【干货】七步,让你的网页表单更亲切
  4. 张岩 重庆大学 计算机学院,扬帆起,乘东风,气芳华——记重庆大学计算机学院新老生交流会...
  5. 微信小程序 PDF下载打印
  6. 看全域消费者运营Quick Audience如何实现自动化营销?
  7. 337. House Robber III 打家劫舍 III
  8. android 6.0 ios9谁快,没安卓6.0流畅?iOS 9突飞猛进终于不卡
  9. ajax上送src,使用script的src实现跨域和类似ajax效果
  10. Android开发笔记(三)屏幕分辨率
  11. [渝粤教育] 中国地质大学 运筹学1 复习题
  12. 2019语言与智能技术竞赛
  13. 清华大学计算机杜瑜皓,我在清华等你来|2015国际信息学奥赛全球第四名杜瑜皓:人生不搏枉少年...
  14. 工程制图与计算机绘图试卷A,工程制图与计算机绘图第4章
  15. C语言:51单片机看这一篇就够了
  16. matlab图例显示均值方差,MATLAB中均值、方差、均方差的计算方法
  17. ASC20-21超算大赛开战——有一群年轻人正在用超算的力量改变世界
  18. hp m281_惠普m281fdw驱动下载-hpm281fdw打印机驱动v44.3 官方版 - 极光下载站
  19. 关于Halcon的离心机试管槽定位
  20. Netty解决TCP粘包/拆包导致的半包读写问题

热门文章

  1. js实现css、addClass、removeClass和toggleClass
  2. DataTable:执行DataTable.Select(条件)返回DataTable的解决方法
  3. 蓝牙通信-打开和关闭蓝牙设备
  4. File Converter——万能格式转化神器
  5. CSDN博客利用HTML标签制作美观表格
  6. C语言之共享内存shm_open(二十五)
  7. 通过wifi使用nfs把ubuntu挂载到android
  8. Docker容器commit安装kali工具集
  9. C++ typeid输出类型
  10. Android Sutiod报错:Dx unsupported class file version 52.0(解决)