`
lg_asus
  • 浏览: 190132 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

一个比较经典的POI小例子

阅读更多
import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;

public class POI_MultiStruct {

	public static void main(String...args){
		POI_MultiStruct poi = new POI_MultiStruct();
		poi.doTest();
	}
	
	public void doTest(){
		try{
			HSSFWorkbook wb = new HSSFWorkbook();
			HSSFSheet sheet = wb.createSheet();
			wb.setSheetName(0, "測試頁");
			HSSFCellStyle normalStyle = createNormalStyle(wb);
//			sheet.addMergedRegion(new Region(0,(short)0,0,(short)2));
			sheet.addMergedRegion(new CellRangeAddress(0,0,0,2));//firstRow,lastRow,firstCol,lastCol
			HSSFRow row = sheet.createRow(0);
			HSSFCell cell = row.createCell(0);
			cell.setCellValue("業務一覽表");
			cell.setCellStyle(normalStyle);
			row.createCell(1).setCellStyle(normalStyle);
			row.createCell(2).setCellStyle(normalStyle);
			String[] seasonName = {"第一季度","第二季度","每三季度","第四季度"};
			for(int i=3;i<7;i++){
				cell = row.createCell(i);
				cell.setCellValue(seasonName[i-3]);
				cell.setCellStyle(normalStyle);
				
			}
			
			for(int i=1;i<7;i++){//從1到6    創建行
				sheet.createRow(i).createCell(0).setCellStyle(normalStyle);
			}
			
			HSSFPatriarch patr = sheet.createDrawingPatriarch();
			HSSFComment comment = patr.createCellComment(new HSSFClientAnchor(0,0,0,0,(short)4,8,(short)7,12));
			comment.setString(new HSSFRichTextString("POI行列順序太亂了吧!\n一會兒行在前,一會兒列在前"));
			
			sheet.addMergedRegion(new CellRangeAddress(1,6,(short)0,(short)0));
			row = sheet.createRow(1);
			cell = row.createCell(0);
			cell.setCellValue("地\n區\n代\n理");
//			System.out.println(cell);
//			cell.setCellValue(new HSSFRichTextString("地\n區\n代\n理\n"));
//			sheet.setColumnWidth(0, 200);
			cell.setCellComment(comment);
			cell.setCellStyle(normalStyle);
			
			
			String[] shopName = {"連鎖店A","連鎖店B","連鎖店C"};
			for(int i=1;i<6;i+=2){
				row = sheet.getRow(i);
				sheet.getRow(i+1).createCell(1).setCellStyle(normalStyle);
				sheet.addMergedRegion(new CellRangeAddress(i,i+1,(short)1,(short)1));
				cell = row.createCell(1);
				cell.setCellValue(shopName[(i-1)/2]);
				cell.setCellStyle(normalStyle);
				
			}
			
			for(int i=1;i<7;i+=2){
				cell = sheet.getRow(i).createCell(2);
				cell.setCellValue("收入");
				cell.setCellStyle(normalStyle);
				cell = sheet.getRow(i+1).createCell(2);
				cell.setCellValue("支出");
				cell.setCellStyle(normalStyle);
			}
			
			for(int i=1;i<7;i++){
				for(int j=3;j<7;j++){
					cell = sheet.getRow(i).createCell(j);
					cell.setCellValue(i*j);
					cell.setCellStyle(normalStyle);
				}
			}
				
				sheet.createFreezePane(3, 1);
				
				for(int i=1;i<7;i+=2){
					sheet.groupRow(i,i);
				}
				
				sheet.groupRow(1,5);
				
				FileOutputStream writeFile = new FileOutputStream("D:\\test.xls");
				wb.write(writeFile);
				writeFile.flush();
				writeFile.close();
		}catch(Exception e){
			e.printStackTrace();
		}		
	}
	
	public static HSSFCellStyle createNormalStyle(HSSFWorkbook wb){
		HSSFCellStyle normalStyle = wb.createCellStyle();
		normalStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		normalStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
		normalStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
		normalStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		normalStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		normalStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
		normalStyle.setLeftBorderColor(HSSFColor.BLACK.index);
		normalStyle.setTopBorderColor(HSSFColor.BLACK.index);
		normalStyle.setRightBorderColor(HSSFColor.BLACK.index);
		normalStyle.setBottomBorderColor(HSSFColor.BLACK.index);
		normalStyle.setWrapText(true);
		return normalStyle;
	}
}


参考:http://blog.csdn.net/youjianbo_han_87/archive/2010/06/08/5655988.aspx
分享到:
评论
3 楼 lg_asus 2011-04-25  
HSSFPatriarch 没有createCellComment()方法,而有createComment()方法,改成后面方法就可以了。

不知道当时为什么没发现这点,当时是运行正常的。。
不会是jar包的版本问题吧?
2 楼 lg_asus 2011-04-25  
多谢提醒,我刚才又试了下,
应该是这句:
HSSFComment comment = patr.createComment(new HSSFClientAnchor(0,0,0,0,(short)4,8,(short)7,12));
出错了, 

如果还有其它错误,请提醒。

共同进步
1 楼 dreamup 2011-04-19  
comment.setString(new HSSFRichTextString("POI行列順序太亂了吧!\n一會兒行在前,一會兒列在前"))


这一行出错了

相关推荐

    POI所有源码及最新文档及经典实例

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个压缩包包含了POI项目的源代码、最新的文档以及一些经典的实例,这对于开发者来说是一份非常宝贵的学习和开发...

    java 操作excel表格经典例子

    - 创建一个包`ch7.poi`,并在该包下创建一个名为`ExcelReader`的类。 ##### 2. 代码实现 ```java public class ExcelReader { // 文件输入流 private BufferedReader reader = null; // 文件类型 private ...

    Struts+Hibernate+Spring整合小项目

    这个"Struts2.2.3+hiberante3.2+spring2.5整合小项目"就是基于这种集成构建的一个应用实例,主要用于实现对数据库的增删改查功能,并且具备导出数据到Excel的功能。 首先,Struts2是经典的MVC(Model-View-...

    思念经典语句.docx

    根据提供的文档信息,本文将对“思念经典语句”这一主题进行深入探讨,并结合文档中的具体例子,提炼出与IT行业相关的知识点。 ### IT技术在文档处理中的应用 #### 1. 文本挖掘与自然语言处理 在处理《思念经典...

    c#读取excel文件的几种方法.pdf

    在这个例子中,查询语句`"select * from [sheet1$]"`用于从名为'sheet1'的工作表中获取所有数据,并填充到一个`DataSet`对象中。这种方法简单但可能不支持Excel 2007及更高版本的.xlsx文件。 2. **方法二:使用Ole...

    线上程序学习

    在这个例子中,每个子程序似乎代表了道路上的一个特定部分,如曲线或直线。 子程序中的“Goto”指令是经典的控制流语句,用于转移到程序的其他部分。在现代编程语言中,通常会使用更高级的概念,如“if”语句或...

    android开发资料大全

    Android自定义View研究-- 一个小Demo Android调用相册拍照实现系统控件缩放切割图片 Android SQLite的实例汇总大全 两分钟彻底让你明白Android Activity生命周期(图文)! Android 图形系统剖析 Android 立体效果图片...

    java编程常见50例

    本资源"java编程常见50例"包含了50个Java编程的经典实例,旨在帮助开发者深入理解和掌握Java语言的核心概念与实用技巧。这些例子涵盖了从基础操作到高级应用的多个方面,包括文件操作、数据处理、网络通信等。 1. *...

Global site tag (gtag.js) - Google Analytics