java poi操作excel

jxl和poi是我所知道的两个比较主流的java操作excel的项目。

jxl:代码很简单,功能也比较少,非常容易入手,可以参考这篇博客,不过不支持2007以上的excel版本,而且在09年就已经停止更新了,这是项目地址

poi:代码有点繁琐,功能很强大,比jxl入手略麻烦一点,是apache公司的一个项目,一直在更新,支持新版本的excel,这是项目地址

这里介绍下poi的一些简单操作:

private HSSFWorkbook workbook;
private HSSFSheet sheet;
private HSSFRow row;
private HSSFCell cell;
workbook=new HSSFWorkbook();
sheet=workbook.createSheet();
//创建第i行
row=sheet.createRow(i);
//第i行的第j个元素
cell=row.createCell(j);
//写入值
cell.setCellValue("hello");

最简单的写入,里面的英文就不解释了,都是字面意思。下面是引用的略复杂的说明。

(以下代码可以直接选中复制,行号会自动去掉)

1.创建一个新的Excle工作薄

  1. // 创建新的Excel 工作簿  
  2. HSSFWorkbook workbook = new HSSFWorkbook();  
  3.           
  4. // 在Excel工作簿中建一工作表,其名为缺省值, 也可以指定Sheet名称  
  5. HSSFSheet sheet = workbook.createSheet();  
  6. //HSSFSheet sheet = workbook.createSheet(“SheetName”);   

2. 创建新行(row),并将单元格(cell)放入其中. 行号从0开始计算.

  1. HSSFRow row = sheet.createRow((short1);  

3.设置sheet名称和单元格内容为中文

  1. wb.setSheetName(n, “中文”,HSSFCell.ENCODING_UTF_16);         
  2. cell.setEncoding((short1);     
  3. cell.setCellValue(“中文”);    

4.设置列宽、行高

  1. sheet.setColumnWidth((short)column,(short)width);     
  2. row.setHeight((short)height);    

5.添加区域,合并单元格

  1. Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo,(short)columnTo);     
  2. sheet.addMergedRegion(region);     
  3. //得到所有区域     
  4. sheet.getNumMergedRegions()    

6.设置单元格边框格式

虚线HSSFCellStyle.BORDER_DOTTED
实线HSSFCellStyle.BORDER_THIN

  1. public static HSSFCellStyle getCellStyle(short type){        
  2.      HSSFWorkbook wb = new HSSFWorkbook();     
  3.      HSSFCellStyle style = wb.createCellStyle();     
  4.      style.setBorderBottom(type);//下边框      
  5.       style.setBorderLeft(type);//左边框      
  6.       style.setBorderRight(type);//右边框      
  7.       style.setBorderTop(type);//上边框      
  8.       return style;     
  9. }    

7.设置字体和内容位置

  1. HSSFFont f  = wb.createFont();     
  2. f.setFontHeightInPoints((short11);//字号     
  3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗     
  4. style.setFont(f);     
  5. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中     
  6. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中     
  7. style.setRotation(short rotation);//单元格内容的旋转的角度     
  8. HSSFDataFormat df = wb.createDataFormat();     
  9. style1.setDataFormat(df.getFormat(“0.00%”));//设置单元格数据格式     
  10. cell.setCellFormula(string);//给单元格设公式     
  11. style.setRotation(short rotation);//单元格内容的旋转的角度     
  12. cell.setCellStyle(style);    

8.插入图片

  1. //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray     
  2.       ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();     
  3.       BufferedImage bufferImg = ImageIO.read(new File(“ok.jpg”));     
  4.       ImageIO.write(bufferImg,“jpg”,byteArrayOut);     
  5. //读进一个excel模版     
  6. FileInputStream fos = new FileInputStream(filePathName+“/stencil.xlt”);      
  7. fs = new POIFSFileSystem(fos);     
  8. //创建一个工作薄     
  9. HSSFWorkbook wb = new HSSFWorkbook(fs);     
  10. HSSFSheet sheet = wb.getSheetAt(0);     
  11. HSSFPatriarch patriarch = sheet.createDrawingPatriarch();     
  12. HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short0,0,(short)10,10);          
  13. patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));    

例1:java

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/easycoding/793

你可能喜欢:(相似内容推荐和广告都使用了谷歌的推荐系统,需要对本站取消广告屏蔽才能显示。感谢点击↓广告支持博主~)

Find

新浪微博(FindSpace博客)QQ群:不安分的Coder(375670127) 不安分的Coder

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*