社区
Java EE
帖子详情
用jsp要做个订单(数据以表单形式),提交后要在台生成excel文件
jincheng18
2008-07-22 04:40:29
现在用jsp要做个订单(数据以表单形式),提交后要在台生成excel文件:
请大家给帮个忙···
随便拿个个例子来说:
<table>
<tr><td>姓名:<input type=text name=name></td><tr>
<tr><td>单位:<input type=text name=company></td><tr>
...........
...全文
375
5
打赏
收藏
用jsp要做个订单(数据以表单形式),提交后要在台生成excel文件
现在用jsp要做个订单(数据以表单形式),提交后要在台生成excel文件: 请大家给帮个忙··· 随便拿个个例子来说: 姓名: 单位: ...........
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jincheng18
2008-07-25
打赏
举报
回复
自己参照APACHE的POI给的一些实例简单拼凑了下:
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"
import="java.util.*,java.io.*,java.awt.image.*,javax.imageio.ImageIO,
org.apache.poi.hssf.util.*,org.apache.poi.hssf.usermodel.*" %>
<%@include file="html/head.jsp"%>
<%!String trans(String s) throws Exception {
return new String(s.getBytes("ISO-8859-1"),"UTF-8");
}
%>
<%
float price = (Float) session.getAttribute("sessionPrice");
int num = Integer.parseInt(request.getParameter("mount"));
float total = price * num;
String orderNo = (String) session.getAttribute("sessionOrderNo");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("大凯产品订单");
sheet.setDefaultColumnWidth((short)(48));
sheet.setColumnWidth((short)1,(short)(10000));
HSSFRow row = null;
HSSFCell cell = null;
//定义标题字体属性
HSSFFont font_Header = wb.createFont();
font_Header.setFontName("黑体");
font_Header.setFontHeightInPoints((short) 16);
font_Header.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
HSSFCellStyle cellStyle_Header = wb.createCellStyle();
cellStyle_Header.setAlignment(HSSFCellStyle.ALIGN_LEFT);
cellStyle_Header.setFont(font_Header);
//定义题头:1-2行
row=sheet.createRow((short)0);
row.setHeight((short)(400));
cell=row.createCell((short)1);
cell.setCellStyle(cellStyle_Header);
cell.setCellValue("北京大凯科技产品订单表");
row=sheet.createRow((short)1);
row.setHeight((short)(400));
cell=row.createCell((short)1);
cell.setCellStyle(cellStyle_Header);
cell.setCellValue("订单编号:"+orderNo);
//合并1-2行1列,插入公司logo
sheet.addMergedRegion(new Region(0,(short)0,1,(short)0));
try{
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg = ImageIO.read(new File(application.getRealPath("/")+"images/dk.jpg"));
ImageIO.write(bufferImg, "jpg", byteArrayOut);
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,(short) 0, 0, (short) 1, 1);
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)).resize();
}catch(Exception e){e.printStackTrace();}
//定义第3行
row=sheet.createRow((short)2);
row.createCell((short)0).setCellValue("产品名称:"); row.createCell((short)1).setCellValue(trans((String) session.getAttribute("sessionProductName")));
//定义第4行
row=sheet.createRow((short)3);
row.createCell((short)0).setCellValue("产品价格:"); row.createCell((short)1).setCellValue(trans(String.valueOf(price)));
//定义第5行
row=sheet.createRow((short)4);
row.createCell((short)0).setCellValue("产品数量:"); row.createCell((short)1).setCellValue(String.valueOf(num));
//定义第6行
row=sheet.createRow((short)5);
row.createCell((short)0).setCellValue("联系人:"); row.createCell((short)1).setCellValue(trans(request.getParameter("contact")));
//定义第7行
row=sheet.createRow((short)6);
row.createCell((short)0).setCellValue("联系方式:"); row.createCell((short)1).setCellValue(trans(request.getParameter("tel")));
//定义第8行
row=sheet.createRow((short)7);
row.createCell((short)0).setCellValue("公司名称:"); row.createCell((short)1).setCellValue(trans(request.getParameter("company")));
//定义第9行
row=sheet.createRow((short)8);
row.createCell((short)0).setCellValue("详细地址:"); row.createCell((short)1).setCellValue(trans(request.getParameter("address")));
//定义第10行
row=sheet.createRow((short)9);
row.createCell((short)0).setCellValue("总计(元):"); row.createCell((short)1).setCellValue(String.valueOf(total));
try{
File file=new File(application.getRealPath("/")+"orders",orderNo+".xls");
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close();
} catch (IOException io) {
System.out.println("io erorr : " + io.getMessage());
}
out.print("<center><h3>订单已成功提交,稍后自动跳转到。。。</h3></center>");
response.setHeader("Refresh","2;URL=product.jsp");
%>
<%@include file="/html/tail.jsp"%>
song040725
2008-07-23
打赏
举报
回复
利用java操作Excel,有个开源的东东-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下载。
一.读取Excel文件内容
/** *//**读取Excel文件的内容
* @param file 待读取的文件
* @return
*/
public static String readExcel(File file)...{
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try ...{
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(file);
} catch (BiffException e) ...{
e.printStackTrace();
} catch (IOException e) ...{
e.printStackTrace();
}
if(wb==null)
return null;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0)...{
//对每个工作表进行循环
for(int i=0;i<sheet.length;i++)...{
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
for(int j=0;j<rowNum;j++)...{
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0)...{
//对每个单元格进行循环
for(int k=0;k<cells.length;k++)...{
//读取当前单元格的值
String cellValue = cells[k].getContents();
sb.append(cellValue+" ");
}
}
sb.append(" ");
}
sb.append(" ");
}
}
//最后关闭资源,释放内存
wb.close();
return sb.toString();
}
二.写入Excel文件
这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api,同时还推荐一篇不错的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10
/** *//**生成一个Excel文件
* @param fileName 要生成的Excel文件名
*/
public static void writeExcel(String fileName)...{
WritableWorkbook wwb = null;
try ...{
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) ...{
e.printStackTrace();
}
if(wwb!=null)...{
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面开始添加单元格
for(int i=0;i<10;i++)...{
for(int j=0;j<5;j++)...{
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
try ...{
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
}
}
try ...{
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
}
}
三.在一个Excel文件中查找是否包含某一个关键字
/** *//**搜索某一个文件中是否包含某个关键字
* @param file 待搜索的文件
* @param keyWord 要搜索的关键字
* @return
*/
public static boolean searchKeyWord(File file,String keyWord)...{
boolean res = false;
Workbook wb = null;
try ...{
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(file);
} catch (BiffException e) ...{
return res;
} catch (IOException e) ...{
return res;
}
if(wb==null)
return res;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
boolean breakSheet = false;
if(sheet!=null&&sheet.length>0)...{
//对每个工作表进行循环
for(int i=0;i<sheet.length;i++)...{
if(breakSheet)
break;
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
boolean breakRow = false;
for(int j=0;j<rowNum;j++)...{
if(breakRow)
break;
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0)...{
boolean breakCell = false;
//对每个单元格进行循环
for(int k=0;k<cells.length;k++)...{
if(breakCell)
break;
//读取当前单元格的值
String cellValue = cells[k].getContents();
if(cellValue==null)
continue;
if(cellValue.contains(keyWord))...{
res = true;
breakCell = true;
breakRow = true;
breakSheet = true;
}
}
}
}
}
}
//最后关闭资源,释放内存
wb.close();
return res;
}
四.往Excel中插入图片图标
插入图片的实现很容易,参看以下代码:
/** *//**往Excel中插入图片
* @param dataSheet 待插入的工作表
* @param col 图片从该列开始
* @param row 图片从该行开始
* @param width 图片所占的列数
* @param height 图片所占的行数
* @param imgFile 要插入的图片文件
*/
public static void insertImg(WritableSheet dataSheet, int col, int row, int width,
int height, File imgFile)...{
WritableImage img = new WritableImage(col, row, width, height, imgFile);
dataSheet.addImage(img);
}
以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证:
try ...{
//创建一个工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//待插入的工作表
WritableSheet imgSheet = workbook.createSheet("Images",0);
//要插入的图片文件
File imgFile = new File("D:/1.png");
//图片插入到第二行第一个单元格,长宽各占六个单元格
insertImg(imgSheet,0,1,6,6,imgFile);
workbook.write();
workbook.close();
} catch (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
但是jxl只支持png格式的图片,jpg格式和gif格式都不支持
五.插入页眉页脚
一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚
/** *//**向Excel中加入页眉页脚
* @param dataSheet 待加入页眉的工作表
* @param left
* @param center
* @param right
*/
public static void setHeader(WritableSheet dataSheet,String left,String center,String right)...{
HeaderFooter hf = new HeaderFooter();
hf.getLeft().append(left);
hf.getCentre().append(center);
hf.getRight().append(right);
//加入页眉
dataSheet.getSettings().setHeader(hf);
//加入页脚
//dataSheet.getSettings().setFooter(hf);
}
我们可以用如下代码测试该方法:
try ...{
//创建一个工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//待插入的工作表
WritableSheet dataSheet = workbook.createSheet("加入页眉",0);
ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1页,共3页");
workbook.write();
workbook.close();
} catch (IOException e) ...{
e.printStackTrace();
} catch (WriteException e) ...{
e.printStackTrace();
}
reality
2008-07-23
打赏
举报
回复
读到的表单内容按行生成多个相同类放到list里
生成excel 循环写入list的内容。
jincheng18
2008-07-23
打赏
举报
回复
没人回。。。。
商城后
台
管理系统(EasyUI、jQuery、js、Ajax、Servlet、
jsp
、mysql、EL,导出
订单
等)
本项目为一管理系统半成品,采用EasyUI、jQuery、Ajax、Servlet、
jsp
、mysql等技术实现,具备
数据
增删改查、导出至
Excel
、验证码、多管理员登录等功能,超级管理员admin拥有最高权限。
poi批量导入导出
Excel
(三、通过模板导出
Excel
并能实现导入多个sheet表)
本文介绍了一个基于SSM框架的项目,如何使用Apache POI库实现
Excel
的批量导入导出功能。重点讲解了通过预先设定的模板导出
Excel
文件
,并能处理导入多个sheet表的情况。内容包括下载POI库、理解
Excel
文件
结构、控制层的实现以及工具类的封装,以解决多sheet导入时的标题重复问题。
EXCEL
函数进阶 跨工作表动态求和实战
本文详细介绍了
JSP
的核心知识与架构。
JSP
是基于Java的服务器端技术,用于
生成
动态HTML页面。文中阐述了
JSP
页面的生命周期、指令、脚本元素、内置对象,还深入讲解了其架构与工作原理,包括转换过程、首次及后续请求处理,以及错误处理机制,助力开发者掌握
JSP
开发技巧。
springboot二手书店销售旧书回收管理系统
本文设计并实现了一款基于SpringBoot的二手书店销售与旧书回收管理系统,采用B/S架构和SSM框架,结合MySQL
数据
库与Java技术,支持图书分类、信息管理、会员管理和
订单
处理等功能。系统前后端分离,具备良好的可维护性和扩展性,适用于高校毕业设计及实际应用场景。
怎么样在应用中实现自助报表功能
本文介绍如何在应用中集成自助报表功能,包括选择合适的组件、具体集成步骤及功能演示。推荐润乾报表,其不仅功能全面,还支持多种
数据
源及权限控制。
Java EE
67,536
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章