Apache-HSSF 对文档的修改读取及写入是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。
HSSFWorkbook excel文档对象
HSSFSheet excel的sheet
HSSFName 名称
HSSFHeader sheet的头
HSSFRowexcel 的行
HSSFFooter sheet的尾
HSSFCell excel的单元格
HSSFCellStyle cell的样式
HSSFFont excel 字体
HSSFDataFormat 日期格式
//excel文件位置
String readfilePath=“f:\\2019-04-23 22_53_44____.xls”;
//创建对excel文件的引用
HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(readfilePath))
//获取sheet 第一个
HSSFSheet sheet=workbook. getSheetAt(0);
//获取其中一行cell
HSSFRow row=sheet.getRow(1);
//获取行结束位置
int colCount=sheet.getRow(0).getLastCellNum();
//遍历
for(int j=1;j<colCount;j++) {
row.getCell(j).setCellType(CellType.STRING);
System.out.println(j+"::"+row.getCell(j).getStringCellValue());
}
//获取sheet数目
Int sheetCount=workbook.getNumberOfSheets();
//取得有效行数
Int rowCount=sheet.getLastRowNum();
//获得一行有效单元格个数
Int cellCount=row.getLastCellNum();
//值类型读写
cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型
cell.getNumericCellValue();//读取为数值类型的单元格内容
/*
读取注意cell是什么类型 string or 数值
*/
//设置excel存放文件位置
public static String writefilePath=“f:\\test.xls”;
//创建excel文件
HSSFWorkbook workbook=new HSSFWorkbook();
//创建sheet 第一个
HSSFSheet sheet=workbook. createSheet("创建的第一个sheet");
//创建一行cell
HSSFRow row=sheet.createRow(0);
//模拟数据在一行显示
String[] testTitle={"课程","学期","院系","开课院系","专业","班级"};
//遍历生成一行cell
for(int j=0;j<testTitle.length;j++) {
row.createCell(j).setCellValue(testTitle[j]);
}
//文件输出
FileOutputStream output=new FileOutputStream(writefilePath);
workbook.write(output);
output.flush();
output.close();
//1.设置列宽,行高
sheet.setColumnWidth((short)column,(short)width);
row.setHeight((short)height);
//2.添加区域,合并单元格
Region region = new Region(rowFrom,columnFrom,rowTo ,columnTo);
//合并从第rowFrom行columnFrom列
sheet.addMergedRegion(region);// 到rowTo行columnTo的区域
//得到所有区域
sheet.getNumMergedRegions()
//3.设置单元格边框格式
HSSFCellStyle style = wb.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框
style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框
style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
//单元格的合并
sheet.addMergedRegion(new CellRangeAddress(0, 4, 0, 2));本示例为合并4行2列
//4、设置字体和内容位置
HSSFFont f = wb.createFont();
f.setFontHeightInPoints((short) 11);//字号
f.setBold(true);//加粗
style.setFont(f);
style.setAlignment(HorizontalAlignment.CENTER);
HSSFDataFormat df = wb.createDataFormat();
style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式
cell.setCellFormula(string);//给单元格设公式
style.setRotation(short rotation);//单元格内容的旋转的角度
//5.对角线设置 通过画线的方式
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFClientAnchor a = new HSSFClientAnchor(0, 0, 1023, 255, (short)7, 0, (short)7, 2);
HSSFShapeGroup group = patriarch.createGroup(a);
group.setCoordinates(0, 0, 320, 276);
float verticalPointsPerPixel = a.getAnchorHeightInPoints(sheet) / Math.abs(group.getY2() - group.getY1());
EscherGraphics g = new EscherGraphics(group, workbook, Color.black, verticalPointsPerPixel);
EscherGraphics2d g2d = new EscherGraphics2d(g);
g2d.drawLine(0, 0, 320, 276);
//6、插入图片
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
//插入圖片
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg = ImageIO.read(new File("f:\\downloadfile-14.jpg"));
ImageIO.write(bufferImg,"jpg",byteArrayOut);
//设置位置
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255,
(short) 0, 0, (short) 11, 11);
// 插入图片
patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
// 6.创建页眉和页脚
HSSFSheet sheet = workbook.createSheet("Test");// 创建工作表(Sheet)
HSSFHeader header =sheet.getHeader();//得到页眉
header.setLeft("页眉左边");
header.setRight("页眉右边");
header.setCenter("页眉中间");
HSSFFooter footer =sheet.getFooter();//得到页脚
footer.setLeft("页脚左边");
footer.setRight("页脚右边");
footer.setCenter("页脚中间");
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4199266/blog/3099213