poi知识积累

导出需要的头:response.setContentType("octets/stream;charset=utf-8");     (需要导出的 类型都是可以在tomcat---conf下的web.xml中找到)
         response.setHeader("Content-Disposition","attachment;filename=a.xls");

提示:多报表导出在一格sheet页中,固定行数可以采取定位某行的方法;

 如果不确定,最好是采取直接写入,从上往下,或者从左往右写.

获取(cell)单元格中内容的方法:

//获取行中的列

HSSFRow dataRow = sheet.getRow(i);
HSSFCell dataCell = dataRow.getCell(0);
String firstCell = ExcelUtil.ReadCell(dataCell);

//ReadCell方法  待定

//数字保留几位小数     String valD = String.format("%.5f", val);       (此处保留val的五位小数,其中val为double类型返回的是String类型)


1,合并单元格

sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0,  (short) (celle + 1)));   四个参数分别代表起始行,起始列,结束行,结束列.
2,一格格插入
 public static void setCellValue(HSSFSheet sheet,int iRow, int iColumn, String values,
			HSSFCellStyle style) throws Exception {
    	try {
			HSSFRow row = sheet.getRow(iRow);
				row = sheet.createRow(iRow);
			HSSFCell cell = row.getCell((short) iColumn);
				cell = row.createCell((short) iColumn);
//			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(values);
			cell.setCellStyle(style);
		} catch (Exception e) {

			throw e;
		}
    }

3,创建(cell)单元格的格式

先获取工作薄对象:

HSSFWorkbook wb = new HSSFWorkbook();


HSSFSheet sheet = wb.createSheet();


HSSFCellStyle setBorder = wb.createCellStyle();


一、设置背景色:


setBorder.setFillForegroundColor((short) 13);// 设置背景色
setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

二、设置边框:

setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框


三、设置居中:

setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中


四、设置字体:

HSSFFont font = wb.createFont();
font.setFontName("黑体");
font.setFontHeightInPoints((short) 16);//设置字体大小

HSSFFont font2 = wb.createFont();
font2.setFontName("仿宋_GB2312");
font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
font2.setFontHeightInPoints((short) 12);

setBorder.setFont(font);//选择需要用到的字体格式

五、设置列宽:

sheet.setColumnWidth(0, 3766); //第一个参数代表列id(从0开始),第2个参数代表宽度值  参考 :"2012-08-10"的宽度为2500

六、设置自动换行:

setBorder.setWrapText(true);//设置自动换行

七 、没有模板输出Excel

response.setContentType("octets/stream;charset=utf-8");
String str=new String("车身.xls".getBytes(),"iso-8859-1");
System.out.println(str);
response.setHeader("Content-Disposition","attachment;filename="+str);
OutputStream out =response.getOutputStream();
HSSFWorkbook work=new HSSFWorkbook();
HSSFCellStyle style=work.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setFillBackgroundColor((short)23);
HSSFFont font=work.createFont();
font.setColor(HSSFFont.COLOR_RED);
style.setFont(font);
HSSFSheet sheet1=work.createSheet("车身");
sheet1.setDefaultColumnWidth(15);

八.带模板输出Excel

//获取模板
public HSSFWorkbook   getTemplate(String filepath) {
FileInputStream fis = null;
POIFSFileSystem fs = null;
HSSFWorkbook wb = null;
try {
fis   = new FileInputStream(filepath);
fs = new POIFSFileSystem(fis);
wb = new HSSFWorkbook(fs);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return wb;
}

      // 导出

response.setCharacterEncoding("UTF-8");
response.setContentType("application/msexcel");
String strFileName = java.net.URLEncoder.encode("东风,毛利表.xls", "UTF-8");
response.setHeader("Content-disposition", "attachment; filename="
+ strFileName);
   HSSFWorkbook work = this.getTemplate(request.getRealPath("/")+"resource/excel/dpmvalue.xls");
   HSSFSheet sheet=work.getSheetAt(0);
   HSSFCellStyle style=work.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont font=work.createFont();
font.setColor(HSSFFont.COLOR_RED);
style.setFont(font);
ExcelUtil.setCellValue(sheet, 0, 0, "净现值和MOC(%)演变 Evolution de VAN", style);

//setCellValue 方法

 public static void setCellValue(HSSFSheet sheet,int iRow, int iColumn, String values,
HSSFCellStyle style) throws Exception {
    try {
HSSFRow row = sheet.getRow(iRow);
if (null == row) {
row = sheet.createRow(iRow);
}
HSSFCell cell = row.getCell((short) iColumn);
if (cell == null) {
cell = row.createCell((short) iColumn);
}
// cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
if (values == null) {
values = "";
}
cell.setCellValue(values);
cell.setCellStyle(style);
} catch (Exception e) {
// this.close();
throw e;
}
    }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值