报表导出

由于之后项目需要,今天提前了解了下报表导出相关信息。按照网上资料整理了下,如下代

package com.yabushan.test.util;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
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.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region;

import jxl.CellView;
import jxl.Range;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Colour;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;



/**
 * 测试导出excel报表
 * @author yabushan
 * 需要的jar包:(两种方式)
 * jxl.jar
 * poi-3.2-FINAL.jar
 *
 */
@SuppressWarnings("deprecation")
public class TestExportExcel {
	public static void main(String[] args) {
		System.out.println("======创建报表");
	//	createExcel();
		//displayExcel();
		exportPoiExcel();
	}
	/**
	 * jax.jar包方式
	 */
	public static  void createExcel(){
		try {
			//打开文件
			WritableWorkbook workbook = Workbook.createWorkbook(new File("E:\\test.xls"));
			//生成名为“第一页”的工作表,参数0表示这是第一页
			WritableSheet sheet=workbook.createSheet("第一页", 0);
			//在Label对象的构造子中指明单元格位置是第一列第一行(0,0)
			//以及单元格内容为test
			Label label=new Label(0, 0, "test");
			//将定义好的单元格添加到工作表中
			sheet.addCell(label);
			/**
			 * 生成一个保存数字的单元格
			 * 必须使用Number的完整包路径,否则又语法歧义
			 * 单元格位置是第二列,第一行,值为789.123
			 */
			jxl.write.Number number=new jxl.write.Number(1, 0, 757);
			sheet.addCell(number);
			sheet.insertColumn(1);
			workbook.copySheet(0, "第二页", 1);
			WritableSheet sheet2=workbook.getSheet(1);
			Range range=sheet2.mergeCells(0, 0, 0, 8);
			sheet2.unmergeCells(range);
			sheet2.addImage(new WritableImage(5, 5,10,20,new File("E:\\11.jpg")));
			CellView cView=new CellView();
			WritableCellFormat cFormat=new WritableCellFormat();
			cFormat.setBackground(Colour.BLUE);
			cView.setFormat(cFormat);
			cView.setSize(6000);
			cView.setSize(10);
			sheet2.setColumnView(2, cView);
			workbook.write();
			workbook.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
	/**
	 * 读取excel中的内容
	 */
	public static  void displayExcel(){
		try {
			Workbook wb=Workbook.getWorkbook(new File("E:\\test.xls"));
			Sheet s=wb.getSheet(0);
				System.out.println(s.getCell(0,0).getContents());
				System.out.println(s.getCell(2,0).getContents());
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
	/**
	 * poi方式创建excel
	 */
	
	@SuppressWarnings("deprecation")
	public static void exportPoiExcel(){
		HSSFWorkbook wb=new HSSFWorkbook();//创建工作簿
		
		HSSFFont font=wb.createFont();
		font.setFontHeightInPoints((short) 24);
		font.setFontName("宋体");
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
		
		HSSFCellStyle style=wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index);
		style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		style.setBorderBottom(HSSFCellStyle.BORDER_THICK);
		style.setFont(font);
		
		HSSFSheet sheet=wb.createSheet("test");//创建工作表,名称为test
		
		int iRow=0;//行号
		int iMaxCol=17;//最大列数
		HSSFRow row=sheet.createRow(iRow);
		HSSFCell cell=row.createCell(0);
		cell.setCellValue(new HSSFRichTextString("测试excel"));
		cell.setCellStyle(style);
		sheet.addMergedRegion(new Region(iRow,(short)0,iRow,(short)(iMaxCol-1))); 
		
		ByteArrayOutputStream os=new ByteArrayOutputStream();
		
		try {
			wb.write(os);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		byte[] xls=os.toByteArray();
		File file=new File("E:\\test.xls");
		OutputStream outputStream=null;
		try {
			outputStream=new FileOutputStream(file);
			try {
				outputStream.write(xls);
			} catch (Exception e) {
				e.printStackTrace();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

码只是一个简单的示例,先做下笔记,后续继续完善!

猜你喜欢

转载自blog.csdn.net/sxf1997/article/details/50760851