9/8上午笔记整理
- Java Excel API(JXL)
– Java Excel是一开放源码项目,通过它Java开发人员可以读
取Excel文件的内容、创建新的Excel文件、更新已经存在的
Excel文件。使用该 API非Windows操作系统也可以通过纯
Java应用来处理Excel数据表。因为是使用Java编写的,所
以我们在Web应用中可以通过JSP、 Servlet来调用API实现
对Excel数据表的访问。
– 除了JXL之外,还有Apache的一个POI项目,也可以操作
Excel,两者相比之下:JXL使用方便,但功能相对POI比较
弱。
Java Excel API(JXL)
– Java Excel是一开放源码项目,通过它Java开发人员可以读
取Excel文件的内容、创建新的Excel文件、更新已经存在的
Excel文件。使用该 API非Windows操作系统也可以通过纯
Java应用来处理Excel数据表。因为是使用Java编写的,所
以我们在Web应用中可以通过JSP、 Servlet来调用API实现
对Excel数据表的访问。
– 除了JXL之外,还有Apache的一个POI项目,也可以操作
Excel,两者相比之下:JXL使用方便,但功能相对POI比较
弱。
一:报表导出功能
- 在userManageQuery_high.jsp中, 先将导出按钮的type属性改为button,再给其注册事件为οnclick=“exportExcal()”—导出excal。
- 在书写其函数,将其提交给AdminServlet处理
function exportExcel()
{
alert();
window.location.href="<%=request.getContextPath()%>/AdminServlet?operator=exportExcel";
}
- 在AdminServlet中加入判断,并且创建exportExcel方法
else if("exportExcel".equals(operator))
{
try {
exportExcel(request,response);
} catch (Exception e) {
e.printStackTrace();
}
- exportExcel方法报表导出方法
①:先将jxl的包导入lib目录中。
②:在exportExcel方法中创建一个可书写的xls文件
response.setHeader("Content-disposition", "attachment; filename="
2. new String("用户".getBytes("GB2312"), "8859_1") +
".xls");
response.setHeader("pragma", "no-cache");
response.setContentType("application/msexcel");
ServletOutputStream os = response.getOutputStream();
WritableWorkbook workbook = Workbook.createWorkbook(os);
//设置响应格式,弹出一个类似文件下载的对话框
//attachment :弹出对话框
//filename:指定参数
5.创建sheet
WritableSheet ws = workbook.createSheet("用户列表", 0);
// 0 代表第一张表
6.选择单元格,写入值
ws.addCell(new Label(0, rowNum, tmp.getId() + ""));
7.我们需要将查询结果导出到表格中,我们的查询结果在session中。
HttpSession session =request.getSession();//查询的结果
List<User> user_list=(List<User>)session.getAttribute("user_list");//从session中拿取数据
8.进行非空判断
if(user_list!=null && user_list.size()>0)
{
//才导出
//怎么写数据到表格? 自然要遍历集合数据 一个对象一个对象的写
int row_index=0;//记录行号
for(User user:user_list)
{
ws.addCell(new Label(0, row_index, user.getId()+""));
ws.addCell(new Label(1, row_index, user.getUsername()));
ws.addCell(new Label(2, row_index, user.getSex().equals("1")?"男":"女"));
ws.addCell(new Label(3, row_index, user.getCertType().getContent()));
ws.addCell(new Label(4, row_index, user.getCert()));
ws.addCell(new Label(5, row_index, user.getUserType().getContent()));
row_index++;
}
workbook.write();
workbook.close();
}else{
System.out.println("请先查询用户数据!");
}
//导出六个的原因是要对 选择,性别,证件类型,证件号码,旅客类型,操作者六个数据进行操作
9.字符串格式化
– 字符串的格式化涉及到的是字体、粗细、字号等元素,这些
功能主要由WritableFont和WritableCellFormat类来负责。
WritableFont font1 = new WritableFont(WritableFont.TIMES, 16,
WritableFont.BOLD);
WritableCellFormat format1 = new WritableCellFormat(font1);
Label cell = new Label(0, 0, "导出用户列表", format1);
设置行高和列宽
ws.setRowView(0, 200); // 行高
ws.setColumnView(0, 30); //列宽
合并单元格
– 从(m,n)到(p,q)的单元格全部合并
ws.mergeCells(0,0,5,0);
二:头像上传功能
- 创建jsp文件
<form action="UploadFileServlet" enctype = "multipart/form/data">
username:<input type="text" name="username">
password:<input type="text" name="password">
头像: <input type="file" name ="photo"></br>
<input type="submit" name="注册"></br>
- 头像上传功能实现步骤:
1.判断表单是否是头像上传表单
boolean isMultipart=ServletFileUpload.isMultipartContent(request)
2.创建解析工厂
is(isMultipart){
FileItemFactory factory = new DiskFileItemFactory();
//创建文件上传的工作对象
List<FileTtem> fileTtems = null;
ServletFileUpload servletFileUpload = new ServletFileUpload (factory);
try{
3.解析表单数据
//获取所以的表单项
fileTtems = servetFileUpload.parseRequset(request);
4.对表单数据进行遍历,逐个处理
for(FileItem item:fileItems){
//如果数据是普通表单数据
if(item.isFormField()){
String fileName = item.getFielName();
if("username".equals(fileName)){
//获取username的value的值
System.out.println("username":+item.getString());
if("password".equals(fileName)){
System.out.println("password":+item.getString);
}
}
}else{ //数文件数据 :photo
//1.获取图片的文件名字
String fullName=item.getName();
System.out.println("图片的完整名字":+fullName);
File file = new File(fullName);
System.out.println("file name ":+file.getName());
//2.获取图片的服务端上的保存路径
String path=request.getServletContext().getRealPath("photos/");
//3.写文件到服务端
File upLoad_file = new File(path,file.getName());
item.write(upload_file);
System.out.println("上传成功");
}
}
}catch(Exception e){
e.printStackTrace();
}
}