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("頁腳中間");看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。