直接上代码
Workbook wb = new Workbook();//创建workbook
wb.loadFromFile("C:\\Users\\Administrator\\Desktop\\111.xlsx");//读取本地excel路径 如果是前端上传的MultipartFile文件可以用下面的方法
String path = "C:/Users/Administrator/Desktop"
//新的文件名前缀,确保不会重复
String uuid = UUID.randomUUID().toString();
// 得到上传文件后缀,前端上传excel的后缀
String ext = "." + FilenameUtils.getExtension(originalName);
// 新生成的文件名称
String fileName = uuid + ext;
//创建对象
File filePkg = new File(path);
if(!filePkg.getParentFile().exists()){//判断文件目录是否存在
filePkg.getParentFile().mkdirs();//创建目录
}
File targetFile = new File(path,fileName);
FileUtils.writeByteArrayToFile(targetFile, file.getBytes());//写到你指定的path位置
wb.loadFromFile(path+'/'+fileName);//path+文件名+后缀
//正题
Worksheet sheet1 = wb.getWorksheets().get(0);//假如只读第一个sheet页
int LineCount = sheet1.getLines().getCount();//获取斜线的个数,这个斜线是形状中的线条
sheet1.getLines().get(0).getTop();//获取第一个先的上边距
sheet1.getLines().get(0).getLeft();//获取左边距
sheet1.getLines().get(0).getHeight();//获取线的高度
sheet1.getLines().get(0).getWidth());//获取宽度
sheet1.getButtonShapes().getCount();//获取按钮的个数
sheet1.getShapes().getCount();//获取形状
sheet1.getShapes().get(0).getOnAction();//形状名
sheet1.getShapes().get(0).getShapeType();//什么类型的形状
sheet1.getComments().getCount();//批注个数,也可以获取批注所在行和列
sheet1.getComments().get(0).getColumn();//所在列
sheet1.getComments().get(0).getRow();//所在行
for(int i = 0; i<sheet1.getButtonShapes().getCount();i++){
IButtonShape iButtonShape = sheet1.getButtonShapes().get(i);
String name = iButtonShape.getOnAction();
System.err.println(iButtonShape.getLeft());
boolean islocked = iButtonShape.isLocked();
System.out.println("name:"+name + "," + " 是否锁定:"+ islocked);
}
//下面这个是读取边框斜线,边框线也是如此读取
CellRange range = sheet1.getRange();
CellRange[] rows1 = range.getRows();
for(int r=0;r<rows1.length;r++){
CellRange[] columns1 = rows1[r].getColumns();//hang
for(int c = 0; c<columns1.length;c++){
LineStyleType lineStyle = columns1[c].getBorders().getByBordersLineType(BordersLineType.DiagonalDown).getLineStyle();
if(lineStyle.toString() != "None"){
//证明有斜线
System.err.println(lineStyle);
System.err.println(rows1[r].getRow());
System.err.println(columns1[c].getColumn());
}
}
}
CellRange cellRange = sheet1.getCellRange("A1");//位置可以通过遍历获取等
CellDataType allowType = cellRange.getDataValidation().getAllowType();//获取数据格式校验,比如该单元格是否只能输入数字,日期格式等等
其他的字体,颜色宽高也能读取