1、创建一个工作簿workbook
2、创建一个工作表sheet
3、创建一个行对象row (下标起始值为0)
4、创建一个单元格对象cell (下标起始值为0)
5、给单元格设置内容
6、设置单元格的样式,设置字体和字体的大小
7、保存,关闭流对象
8、下载
public static void main(String[] args) throws Exception {
//1 创建工作薄:Workbook是一个接口,它有一个实现类HSSFWorkbook对象,这个对象专门操作excel97-03,excel的后缀名是xls
Workbook wb = new HSSFWorkbook();
//2 创建工作表sheet:工作表
Sheet sheet = wb.createSheet();
//3 创建行对象,java中从0开始计数
Row row = sheet.createRow(3);
//4 创建列对象
Cell cell = row.createCell(3);
//5 设置内容
cell.setCellValue("啦啦啦啦");
//6 设置内容格式
Font font = wb.createFont();
font.setFontHeightInPoints((short)24);//以像素点的方式设置字体大小
font.setFontName("华文彩云");//设置字体
//System.out.println(Short.MIN_VALUE+"-"+Short.MAX_VALUE);
//创建格式
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFont(font);
//将cellStyle给cell
cell.setCellStyle(cellStyle);
//7 保存(javase项目采用保存)
FileOutputStream stream = new FileOutputStream(new File("d://a.xls"));
wb.write(stream);//将对象写进流
stream.flush();
stream.close();
//8 下载
System.out.println("运行结束");
}
-----------------------------------------------------样式
//大标题的样式
public CellStyle bigTitle(Workbook wb){
CellStyle style = wb.createCellStyle();
Font font = wb.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short)16);
font.setBoldweight(Font.BOLDWEIGHT_BOLD); //字体加粗
style.setFont(font);
style.setAlignment(CellStyle.ALIGN_CENTER); //横向居中
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //纵向居中
return style;
}
//小标题的样式
public CellStyle title(Workbook wb){
CellStyle style = wb.createCellStyle();
Font font = wb.createFont();
font.setFontName("黑体");
font.setFontHeightInPoints((short)12);
style.setFont(font);
style.setAlignment(CellStyle.ALIGN_CENTER); //横向居中
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //纵向居中
style.setBorderTop(CellStyle.BORDER_THIN); //上细线
style.setBorderBottom(CellStyle.BORDER_THIN); //下细线
style.setBorderLeft(CellStyle.BORDER_THIN); //左细线
style.setBorderRight(CellStyle.BORDER_THIN); //右细线
return style;
}
//文字样式
public CellStyle text(Workbook wb){
CellStyle style = wb.createCellStyle();
Font font = wb.createFont();
font.setFontName("Times New Roman");
font.setFontHeightInPoints((short)10);
style.setFont(font);
style.setAlignment(CellStyle.ALIGN_LEFT); //横向居左
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //纵向居中
style.setBorderTop(CellStyle.BORDER_THIN); //上细线
style.setBorderBottom(CellStyle.BORDER_THIN); //下细线
style.setBorderLeft(CellStyle.BORDER_THIN); //左细线
style.setBorderRight(CellStyle.BORDER_THIN); //右细线
return style;
}
------------------------------------模板打印
public String print() throws Exception {
//读取模板,路径
String path = ServletActionContext.getRequest().getRealPath("/");
System.out.println("path:"+path);
path += "d://tOUTPRODUCT.xls";//获取模板在服务器的路径
FileInputStream is = new FileInputStream(new File(path));
//1 借助模板创建工作簿
Workbook wb = new HSSFWorkbook(is);
//2 获取工作表
Sheet sheet = wb.getSheetAt(0);
//定 义公共变量
Row nRow = null;//行对象
Cell nCell = null;//单元格对象
int rowNo = 0;//第几行
int cellNo = 1;//列对象
/*******************设置大标题********************/
//3 获取行对象
nRow = sheet.getRow(rowNo);
//4 获取单元格
nCell = nRow.getCell(cellNo);
// 5 设置数据
nCell.setCellValue(inputDate.replace("-0", "-").replace("-", "年")+"月份出货表");
// 6 设置样式,获取原来的样式赋值,这步可以省略
// nCell.setCellStyle(nCell.getCellStyle());
/*******************设置小标题********************/
rowNo++;//跳过小标题行
/*******************设置出货数据********************/
rowNo++;//进入数据第一行行
//获取样式
nRow = sheet.getRow(rowNo);
//客户
CellStyle customerCellStyle = nRow.getCell(cellNo++).getCellStyle();
//订单号
CellStyle contractNoCellStyle = nRow.getCell(cellNo++).getCellStyle();
//货号
CellStyle productNoCellStyle = nRow.getCell(cellNo++).getCellStyle();
// 准备数据
String hql = "from ContractProduct where to_char(contract.shipTime,'yyyy-mm')='"+inputDate+"'";
//货物的集合
List
for(ContractProduct cp:list){
//单元格no归1
cellNo = 1;
//一条数据创建一行
nRow = sheet.createRow(rowNo);
//在创建每列的数据
//客户
nCell = nRow.createCell(cellNo++);
nCell.setCellValue(cp.getContract().getCustomName());
nCell.setCellStyle(customerCellStyle);
//订单号
nCell = nRow.createCell(cellNo++);
nCell.setCellValue(cp.getContract().getContractNo());
nCell.setCellStyle(contractNoCellStyle);
//货号
nCell = nRow.createCell(cellNo++);
nCell.setCellValue(cp.getProductNo());
nCell.setCellStyle(productNoCellStyle);
// 开始操作数据,rowNo++
rowNo++;
}
// 7 写入流
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();//字节数组缓冲流
wb.write(byteArrayOutputStream);
// 8下 载
DownloadUtil downloadUtil = new DownloadUtil();
HttpServletResponse response = ServletActionContext.getResponse();
/**
* 第一个参数:流
* 第二个参数:response
* 第三个参数:下载的文件名
*/
downloadUtil.download(byteArrayOutputStream, response, "出货表.xls");
return NONE;
}