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();
}
}
}
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();
}
}
}
相关文章推荐
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
- poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
- poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
- poi操作excel导出是否修改模板文件内容的问题
- 用POI在word07模板文件中创建表格,修改内容等操作
- 文件下载:POI读取word或Excel,修改内容后以流的形式输出到前端
- POI根据EXCEL模板,修改内容导出新EXCEL (只支持HSSF)
- poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
- poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
- POI根据EXCEL模板,修改内容导出新EXCEL
- java POI 修改 读取 word 内容
- 最新版java 实现poi方式读取word文件内容
- poi 读取 ppt,并将内容转换成图片
- java用poi实现对word读取和修改操作
- Manifest.xml中删除了『存储/修改删除SD卡中的内容』和『手机通话/读取手机状态和身份』权限,但生成apk安装软件时仍提示 允许应用程序了解或使用这两个权限
- 利用poi.jar对excel进行读取、修改和删除
- POI读取excel某个单元格内容
- POI读取Excel模板文件,另存新的文件
- poi操作excel实现读取、修改并输出(单表操作)
- Java 读取rtf模板内容然后替换内容,保存为word