社区
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>
...........
...全文
349
5
打赏
收藏
用jsp要做个订单(数据以表单形式),提交后要在台生成excel文件
现在用jsp要做个订单(数据以表单形式),提交后要在台生成excel文件: 请大家给帮个忙··· 随便拿个个例子来说: 姓名: 单位: ...........
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
没人回。。。。
jsp
上传多个
excel
文件
,解析入库,批量导出
excel
文件
jsp
页面可以批量上传多个
excel
文件
,后
台
解析入库。并将信息展现在
jsp
页面表格里,勾选多个
数据
,可以导出
excel
文件
。很方便,很实用!(每一行
数据
,就相当于表格里的某张表的一条信息,后期只要改下表结构,
数据
库,实体类,即可!)
jsp
页面
生成
word或
excel
一、 目录 1 二、 使用
JSP
实现WORD、
EXCEL
格式报表打印 2 word页面只要在
jsp
头设置如下指令: 2
excel
如下: 2 简单示例: 2 三、 在客户端
生成
Word
文件
11 1 在client端直接
生成
word文档 11 小技巧: 12 2 在客户端输出存在
数据
库中的word实体 12 四、 控制Word,
Excel
在浏览器中打开,还是下载 15 五、 用
JSP
输出Word文档,如何去掉“
文件
下载”提示? 15 问题
文件
源代码: 15 回答: 16 六、 怎么把
JSP
页面上的TABLE输出到
EXCEL
表中? 16 简单实现如下: 16 属性设置为attachment
文件
名带日期格式:浏览器下载 16
jsp
文件
16
jsp
设置属性为inline,浏览器打开操作 16 七、 利用J
Excel
Api来动态
生成
excel
文档 17 Test.java类 17 写一个
jsp
,来利用Test这个javabean输出
excel
文档 18
jsp
实现
excel
上传至
数据
库,以及 从
数据
库导出
excel
本人亲自调测通过,可以使用
jsp
实现
excel
数据
上传至服务器 然后上传至
数据
库 另外实现了
数据
库
数据
导出至
excel
功能 希望对初学者有帮助
jsp
关于
excel
的上传下载
jsp
关于
excel
的上传下载
jsp
关于
excel
的上传下载
jsp
关于
excel
的上传下载
在线
生成
Excel
(基于JXL)
这是一个很不错的实例,自己可以参照扩展.推荐大家看看.
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章