首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

在Excel中测试当动态增多记录时,相应图表也发生变化

2012-10-09 
在Excel中测试当动态增加记录时,相应图表也发生变化最近,有一个需求,就是有不同的Excel模板,而且可以在其

在Excel中测试当动态增加记录时,相应图表也发生变化

最近,有一个需求,

就是有不同的Excel模板,而且可以在其中插入图片,并且图表会随着插入数据的变化而变化.

?

以下是我实现此方案的一个思路,大家可以在此基础上进行修改.

?

// 测试当动态增加记录时,相应图表也发生变化
// 这个例子程序挺实用的,大家可以在这个基础上进行修改.
// aa00aa00
package com.together.nms.dt.data.model.hibernate.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.usermodel.*;

//测试当动态增加记录时,相应图表也发生变化
public class testchart {

?/**
? * 插入行
? *
? * @param wb
? *??????????? 工作簿
? * @param sheet
? *??????????? sheet页
? * @param starRow
? *??????????? 开始行,其下面插入
? * @param rows
? *??????????? 插入的行数
? */
?public static void insertRow(HSSFWorkbook wb, HSSFSheet sheet, int starRow,
???int rows) {

??sheet.shiftRows(starRow + 1, sheet.getLastRowNum(), rows);

??starRow = starRow - 1;

??for (int i = 0; i < rows; i++) {

???HSSFRow sourceRow = null;
???HSSFRow targetRow = null;
???HSSFCell sourceCell = null;
???HSSFCell targetCell = null;

???starRow = starRow + 1;
???sourceRow = sheet.getRow(starRow);
???targetRow = sheet.createRow(starRow + 1);
???targetRow.setHeight(sourceRow.getHeight());

???for (int m = sourceRow.getFirstCellNum(); m < sourceRow
?????.getPhysicalNumberOfCells(); m++) {

????sourceCell = sourceRow.getCell(m);
????targetCell = targetRow.createCell(m);

????// targetCell.setEncoding(sourceCell.getEncoding());
????targetCell.setCellStyle(sourceCell.getCellStyle());
????targetCell.setCellType(sourceCell.getCellType());
???}
??}
?}

?/**
? * @param args
? */
?public static void main(String[] args) {
??// TODO Auto-generated method stub
??try {
???POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(
?????"d:\\Book1.xls"));
???HSSFWorkbook wb = new HSSFWorkbook(fs);
???HSSFSheet sheet = wb.getSheetAt(0);

???insertRow(wb, sheet, 3, 20);// 从第四行插入(excel中在第4行后插入),插入五行
???for (int i = 4; i < 23; i++) {
????HSSFRow row0 = sheet.getRow(i);
????for (int j = 0; j < 2; j++) {
?????row0.getCell(j).setCellType(HSSFCell.CELL_TYPE_STRING);
?????row0.getCell(j).setCellValue(i + j);

????}
???}

???FileOutputStream fileOut = new FileOutputStream("d:\\xxxx.xls");
???wb.write(fileOut);
???fileOut.close();

??} catch (Exception e) {
???e.printStackTrace();
??}
?}
}

?

例子使用的jar为poi.3.7

?

最后,把例子代码全部上传,并且带有jar包,也方便大家进行测试,呵呵!!

热点排行