溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Apache-HSSF 對文檔的修改讀取及寫入是怎么樣的

發(fā)布時間:2021-10-20 17:00:21 來源:億速云 閱讀:126 作者:柒染 欄目:大數(shù)據(jù)

Apache-HSSF 對文檔的修改讀取及寫入是怎么樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一、HSSF概述

  • HSSF 是Horrible SpreadSheet Format的縮寫,通過HSSF,你可以用純Java代碼來讀取、寫入、修改Excel文件。HSSF 為讀取操作提供了兩類API:usermodel和eventusermodel,即“用戶模型”和“事件-用戶模型”。

二、poi excel文檔結(jié)構(gòu)

  • HSSFWorkbook           excel文檔對象

  • HSSFSheet                   excel的sheet

  • HSSFName                   名稱

  • HSSFHeader                 sheet的頭

  • HSSFRowexcel 的行

  • HSSFFooter                 sheet的尾

  • HSSFCell                     excel的單元格

  • HSSFCellStyle             cell的樣式

  • HSSFFont                    excel 字體

  • HSSFDataFormat        日期格式

三、導入excel

//excel文件位置
String readfilePath=“f:\\2019-04-23 22_53_44____.xls”;

//創(chuàng)建對excel文件的引用
HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(readfilePath))

//獲取sheet   第一個
HSSFSheet sheet=workbook. getSheetAt(0);

//獲取其中一行cell
HSSFRow row=sheet.getRow(1);

//獲取行結(jié)束位置
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());
}

常用api導入

//獲取sheet數(shù)目
Int sheetCount=workbook.getNumberOfSheets();

//取得有效行數(shù)
Int rowCount=sheet.getLastRowNum();

//獲得一行有效單元格個數(shù)
Int cellCount=row.getLastCellNum();

//值類型讀寫
cell.setCellType(HSSFCell.CELL_TYPE_STRING); //設(shè)置單元格為STRING類型   
cell.getNumericCellValue();//讀取為數(shù)值類型的單元格內(nèi)容 
/*
讀取注意cell是什么類型 string or  數(shù)值
*/

四、導出excel

//設(shè)置excel存放文件位置
public static String writefilePath=“f:\\test.xls”;
//創(chuàng)建excel文件
HSSFWorkbook workbook=new HSSFWorkbook();
//創(chuàng)建sheet   第一個
HSSFSheet sheet=workbook. createSheet("創(chuàng)建的第一個sheet");
//創(chuàng)建一行cell
HSSFRow row=sheet.createRow(0);
//模擬數(shù)據(jù)在一行顯示
String[] testTitle={"課程","學期","院系","開課院系","專業(yè)","班級"};
//遍歷生成一行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();

導出excel常用api

//1.設(shè)置列寬,行高
  sheet.setColumnWidth((short)column,(short)width);      
  row.setHeight((short)height); 
//2.添加區(qū)域,合并單元格
  Region region = new Region(rowFrom,columnFrom,rowTo  ,columnTo);
//合并從第rowFrom行columnFrom列   
  sheet.addMergedRegion(region);// 到rowTo行columnTo的區(qū)域      
//得到所有區(qū)域       
  sheet.getNumMergedRegions()
//3.設(shè)置單元格邊框格式
  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、設(shè)置字體和內(nèi)容位置
   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%"));//設(shè)置單元格數(shù)據(jù)格式       
   cell.setCellFormula(string);//給單元格設(shè)公式       
   style.setRotation(short rotation);//單元格內(nèi)容的旋轉(zhuǎn)的角度 

//5.對角線設(shè)置 通過畫線的方式
   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); 


//設(shè)置位置       
   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.創(chuàng)建頁眉和頁腳
  HSSFSheet sheet = workbook.createSheet("Test");// 創(chuàng)建工作表(Sheet) 
  HSSFHeader header =sheet.getHeader();//得到頁眉 
  header.setLeft("頁眉左邊"); 
  header.setRight("頁眉右邊"); 
  header.setCenter("頁眉中間"); 
  HSSFFooter footer =sheet.getFooter();//得到頁腳 
  footer.setLeft("頁腳左邊"); 
  footer.setRight("頁腳右邊"); 
  footer.setCenter("頁腳中間");

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI