您的位置:首页 > 其它

poi读取模板并修改模板内容

2017-12-15 16:07 357 查看
       poi读取模板并修改模板内容,基本操作代码都有展示。包括:

       1.读取excel

       2.创建sheet,给sheet命名

       3.获取指定的表格并替换其中的内容

       4.创建新的行或者列,并给cell赋值

       5.关于复杂表格中间出现循环的处理。

       6.样式的处理。

       7.当存在循环行的时候最后处理循环数据,使用插入行方法,其他行会自动下移,减少计算处理。(见代码时间处理的两种方式)

poi处理表格比较灵活,同时比较繁琐,使用这样的方式后期维护量大,开发成本高,目前很多报表软件,可以视实际情况选择。

      以下为代码和表格模板,需要poi3.8的包:

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFFont;

import org.apache.poi.hssf.util.HSSFColor;

import org.apache.poi.ss.usermodel.Font;

import org.apache.poi.ss.util.CellRangeAddress;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFCellStyle;

import org.apache.poi.xssf.usermodel.XSSFColor;

import org.apache.poi.xssf.usermodel.XSSFFont;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFTable;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class excelUtil {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("tempFile/test1.xlsx");
XSSFWorkbook workBook = new XSSFWorkbook(fis);
String fileName = "test" + System.currentTimeMillis() + ".xlsx";
OutputStream out = new FileOutputStream("tempFile" + "/" + fileName);
//XSSFCellStyle style = CellStyle.getStyle(workBook);
XSSFSheet sheet = workBook.cloneSheet(0); // 进行模板的克隆
workBook.setSheetName(0, "sheet0"); // 给sheet命名
//XSSFRow row = sheet.createRow(2);              //创建行
//XSSFCell cell = row.createCell(2);             //创建列
//row2.createCell(0).setCellValue("你好吗");            //-创建新的cell,不会为null
//sheet.getRow(0).getCell(0).setCellValue("我爱你");  //替换  取不到值为报null

//创建新的cell和样式

// XSSFCell nameCell = sheet.createRow(0).createCell(1);

//     XSSFCellStyle style = workBook.createCellStyle();

//     XSSFFont font = workBook.createFont();

//     font.setColor(HSSFColor.GREEN.index);

//     style.setFont(font);

// nameCell.setCellStyle(style);

// nameCell.setCellValue("尹江桥");

             
//替换之前的内容
XSSFCell nameCell = sheet.getRow(0).getCell(1);
nameCell.setCellValue("尹江桥");
XSSFCell ageCell = sheet.getRow(0).getCell(3);
ageCell.setCellValue("24");
XSSFCell placeCell = sheet.getRow(0).getCell(5);
placeCell.setCellValue("湖北");
XSSFCell skillsCell = sheet.getRow(2).getCell(1);
skillsCell.setCellValue("java,php,python");

List<Map> list = new ArrayList<Map>();
Map<String,String> m1 = new HashMap<String, String>();
Map<String,String> m2 = new HashMap<String, String>();
Map<String,String> m3 = new HashMap<String, String>();
m1.put("college", "长江大学");
m2.put("college", "武汉大学");
m3.put("college", "深圳大学");
m1.put("time", "2015/12/12-2016/15/12");
m2.put("time", "2016/12/12-2017/15/12");
m3.put("time", "2016/12/12-2017/15/12");
list.add(m1);
list.add(m2);

//循环之前赋值

sheet.getRow(18).getCell(5).setCellValue("2017/12/15");
    sheet.shiftRows( 17, 17+list.size(), 1, true, false);  //第1个参数是指要开始插入的行,第2个参数是结尾行数

            for(int i=0;i<list.size();i++){

                XSSFRow creRow = sheet.createRow(17+i);

                creRow.setRowStyle(sheet.getRow(17).getRowStyle());

                creRow.createCell(0).setCellValue(list.get(i).get("college").toString());

                creRow.createCell(1).setCellValue(list.get(i).get("time").toString());

            }

//循环之后的赋值

       // sheet.getRow(17+list.size()).getCell(5).setCellValue("2017/12/15");

            
workBook.removeSheetAt(0); // 移除workbook中的模板sheet
workBook.write(out);
fis.close();
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poi excel 报表 模板