数据的基本的导入导出,很详细

这里是通过jxl实现对excel的导入导出的,可以动态创建本地excel,读取本地excel,写入excel。

只需导入jxl.jar包即可;

基本操作:

一:创建本地excel:
数据,通过输出流输出到客户端下载
public static void createExecel(HttpServletRequest request,HttpServletResponse response,String fileName){
OutputStream os=null;
try {
os=response.getOutputStream();
response.reset();
response.setCharacterEncoding(“utf-8”);
response.setHeader(“Content-Disposition”, “attachment;filename=”+fileName);
response.setContentType(“application/msexcel”);
//创建工作薄
WritableWorkbook wwb=Workbook.createWorkbook(os);
//创建新的一页
WritableSheet sheet=wwb.createSheet(“First sheet”, 0);
//创建要显示的内容,第一个参数为列,第二个参数为行,第三个参数为内容
Label xuexiao=new Label(0,0,“学校”);
sheet.addCell(xuexiao);
Label zhuanye=new Label(1,0,“专业”);
sheet.addCell(zhuanye);
Label xuexiao1=new Label(0,1,“清华大学”);
sheet.addCell(xuexiao1);
Label zhuanye1=new Label(1,1,“软件工程”);
sheet.addCell(zhuanye1);
//把创建的内容写入输出流,并关闭
wwb.write();
wwb.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}

二:创建带有 样式的EXECEL
//创建带有 样式的EXECEL,添加数据,通过输出流输出到客户端下载
public static void createStyleExecel(HttpServletRequest request,HttpServletResponse response,String fileName){
OutputStream os=null;
try {
os=response.getOutputStream();
response.reset();
response.setCharacterEncoding(“utf-8”);
response.setHeader(“Content-Disposition”, “attachment;filename=”+fileName);
response.setContentType(“application/msexcel”);
//创建工作薄
WritableWorkbook wwb=Workbook.createWorkbook(os);
//创建新的一页
WritableSheet sheet=wwb.createSheet(“First sheet”, 0);
//构造表头,合并单元格,第一个参数是起始列,第二个参数是起始行,第三个参数是终止列,第四个参数是终止行
sheet.mergeCells(0, 0, 1, 0);
//设置字体为Arial,字号为10,黑体显示
WritableFont wf=new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);
//生成一个单元格样式控制对象
WritableCellFormat wcf=new WritableCellFormat(wf);
//单元格的内容水平方向上居中
wcf.setAlignment(jxl.format.Alignment.CENTRE);
//单元格的内容垂直方向上居中
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
//创建要显示的内容,第一个参数为列,第二个参数为行,第三个参数为内容
Label title=new Label(0,0,“学校专业信息表”,wcf);
//设置第一行的高度
sheet.setRowView(0,600,false);
sheet.addCell(title);

				WritableFont wf1=new WritableFont(WritableFont.ARIAL);
				wf1.setColour(Colour.GOLD);//设置字体颜色
				WritableCellFormat wcf1=new WritableCellFormat(wf1);
				
				
				Label fd=new Label(0,1,"学校",wcf1);
				sheet.addCell(fd);				
				Label be=new Label(1,1,"专业",wcf1);
				sheet.addCell(be);				
				Label rq=new Label(0,2,"清华大学");
				sheet.addCell(rq);
				Label rq1=new Label(1,2,"软件工程");
				sheet.addCell(rq1);				
				
				//把创建的内容写入输出流,并关闭
				wwb.write();
				wwb.close();
				os.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}

三:创建excel,从数据库读取数据写入excel
//创建EXECEL,从数据库导入数据,输出到客户端下载
public static void createExecelData(HttpServletRequest request,HttpServletResponse response,StudentService studentService,String fileName){
OutputStream os=null;
try {
os=response.getOutputStream();
response.reset();
response.setCharacterEncoding(“utf-8”);
response.setHeader(“Content-Disposition”, “attachment;filename=”+fileName);
response.setContentType(“application/msexcel”);
//创建工作薄
WritableWorkbook wwb=Workbook.createWorkbook(os);
//创建新的一页
WritableSheet sheet=wwb.createSheet(“First sheet”, 0);
//创建要显示的内容,第一个参数为列,第二个参数为行,第三个参数为内容
Label studentId=new Label(0,0,“ID”);
sheet.addCell(studentId);
Label studentName=new Label(1,0,“姓名”);
sheet.addCell(studentName);
List students=studentService.findByHq(“from Student s”, null);
for(int i=0;i<students.size();i++){
studentId=new Label(0,i+1,students.get(i).getStudentId()+"");
studentName=new Label(1,i+1,students.get(i).getStudentName());
sheet.addCell(studentId);
sheet.addCell(studentName);
}

			//把创建的内容写入输出流,并关闭
			wwb.write();
			wwb.close();
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
}
四:读取本地EXECEL文件数据		

//读取本地EXECEL文件数据
public static void readExcel(StudentService studentService,String filePath){
//创建只读Workbook对象
Workbook wb=null;
try {
InputStream is=new FileInputStream(filePath);
wb=Workbook.getWorkbook(is);
//创建sheet表,sheet下标从0开始
Sheet sheet=wb.getSheet(0);
//获取sheet表的总列数
int cols=sheet.getColumns();
System.out.println(“列数:”+cols);
//获取sheet表的总行数
int rows=sheet.getRows();
System.out.println(“行数:”+rows);
//遍历每个单元格
List students=new ArrayList();
for(int i=1;i<rows;i++){
Student s=new Student();
for(int j=0;j<cols;j++){
Cell cell=sheet.getCell(j,i);
System.out.println((i+","+j+":")+cell.getContents());
if(j==0){
s.setStudentId(Integer.valueOf(cell.getContents()));
}else{
s.setStudentName(cell.getContents());
}
}
students.add(s);
}
studentService.saveBatch(students);
System.out.println(“batch ok”);
} catch (Exception e) {
e.printStackTrace();
}
}
五 :实现通过jsp导入数据,到数据库:
分两步实现,先把文件上传到服务器本地,再读取本地excel文件



public String executeImport(){
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
//首先将文件上传至服务器 f:\temp目录
InputStream is=null;
OutputStream os=null;
try {
System.out.println(“in upload”);
is=new FileInputStream(file);
path=“F:\temp\”+fileFileName;
os=new FileOutputStream(new File(path));
byte[] b=new byte[1024];
int num;
while((num=is.read(b))!=-1){
os.write(b, 0, num);
os.flush();
}

	} catch (Exception e) {
		e.printStackTrace();
	}finally{
		try {
			os.close();
			is.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
		e.printStackTrace();
		}
	}
	//从服务器读取Execel
	ExcelUtil.readExcel(studentService,"F:\\temp\\"+fileFileName);
	System.out.println("导入 execel ok");
	
	return "all";
}

六 导出excel
导出

public String executeExport(){
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
// ExcelUtil.createExecel(request, response,fileName);
ExcelUtil.createExecelData(request, response,studentService,fileName);
// ExcelUtil.createStyleExecel(request, response,fileName);
System.out.println(“导出 execel ok”);
return null;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值