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
分享到:
相关推荐
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个压缩包包含了POI项目的源代码、最新的文档以及一些经典的实例,这对于开发者来说是一份非常宝贵的学习和开发...
- 创建一个包`ch7.poi`,并在该包下创建一个名为`ExcelReader`的类。 ##### 2. 代码实现 ```java public class ExcelReader { // 文件输入流 private BufferedReader reader = null; // 文件类型 private ...
这个"Struts2.2.3+hiberante3.2+spring2.5整合小项目"就是基于这种集成构建的一个应用实例,主要用于实现对数据库的增删改查功能,并且具备导出数据到Excel的功能。 首先,Struts2是经典的MVC(Model-View-...
根据提供的文档信息,本文将对“思念经典语句”这一主题进行深入探讨,并结合文档中的具体例子,提炼出与IT行业相关的知识点。 ### IT技术在文档处理中的应用 #### 1. 文本挖掘与自然语言处理 在处理《思念经典...
在这个例子中,查询语句`"select * from [sheet1$]"`用于从名为'sheet1'的工作表中获取所有数据,并填充到一个`DataSet`对象中。这种方法简单但可能不支持Excel 2007及更高版本的.xlsx文件。 2. **方法二:使用Ole...
在这个例子中,每个子程序似乎代表了道路上的一个特定部分,如曲线或直线。 子程序中的“Goto”指令是经典的控制流语句,用于转移到程序的其他部分。在现代编程语言中,通常会使用更高级的概念,如“if”语句或...
Android自定义View研究-- 一个小Demo Android调用相册拍照实现系统控件缩放切割图片 Android SQLite的实例汇总大全 两分钟彻底让你明白Android Activity生命周期(图文)! Android 图形系统剖析 Android 立体效果图片...
本资源"java编程常见50例"包含了50个Java编程的经典实例,旨在帮助开发者深入理解和掌握Java语言的核心概念与实用技巧。这些例子涵盖了从基础操作到高级应用的多个方面,包括文件操作、数据处理、网络通信等。 1. *...