导出为Excel文档

先搞jar包吧,参考上一篇文章。上一篇文章没写SpringMVC上传下载需要的jar包,现在给列出来吧

<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.0.1</version>
	</dependency>

    <dependency>
		  <groupId>commons-fileupload</groupId>
		  <artifactId>commons-fileupload</artifactId>
		  <version>1.3</version>
	</dependency>

 

<!-- 上传下载操作  -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		  <property name="defaultEncoding" value="utf-8" />
	      <property name="maxUploadSize" value="10485760000" />
	      <property name="maxInMemorySize" value="40960" />
	</bean>

  这个配置文件

好了,言归正传,看导出文件吧。

@RequestMapping(value = "/exportfile")
	public void exportFile(HttpServletResponse response,String startDate, String endDate, String keywords, Integer pageNo) throws WriteException, IOException{

		startDate = StringUtils.isNotBlank(startDate) ? startDate + " 00:00:00 " : null;
    	    endDate = StringUtils.isNotBlank(endDate) ? endDate + " 23:59:59 " : null;
    	    keywords = StringUtils.isNotBlank(keywords) ? keywords : null;

  这里是从前台接收到的数据,开始时间,结束时间,还有一个查询关键字。

pageNo = 1;   //从第一页开始
int title = 0;
User user = null;
WritableWorkbook book = null;
UserLoginHistory userLoginHistory = null;int sheetSize = Integer.valueOf(SysConfigUtil.getParamValue("sheet.show.size")).intValue();//每页数量--工作表每页数量(从数据库中查出来每个工作表要显示多少条数据)

 数据量还是比较大的,所以用的分页查询,先把数据查出来一页一页往Excel表格中插入。

//调用接口获取用户数据
Page userloginhistoryPageCount = CenterClient.getUserLoginHistoryList(startDate, endDate, keywords, pageNo, sheetSize);
int totalPage = userloginhistoryPageCount.getTotalPage();//总页数
String path = request.getServletContext().getRealPath("file/temp");
book = Workbook.createWorkbook(new File(path+"/userExportExcel.xls"));

第一次调用接口获取数据,获取总页数

          do{
				Page userloginhistoryPage = CenterClient.getUserLoginHistoryList(startDate, endDate, keywords, pageNo, sheetSize);
				List<UserLoginHistory> pserLoginHistoryList = userloginhistoryPage.getRecords();
				WritableSheet sheet = book.createSheet("awifi-"+pageNo, pageNo);//创建工作表

				//设置每列表格宽度(20)
				sheet.setColumnView(0, 20);
				sheet.setColumnView(1, 20);
				sheet.setColumnView(2, 20);
				sheet.setColumnView(3, 20);
				sheet.setColumnView(4, 20);
				sheet.setColumnView(5, 20);

				//title样式
				WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
		        WritableCellFormat titleFormat = new WritableCellFormat (titleFont);
		        titleFormat.setAlignment(jxl.format.Alignment.CENTRE);
		        //文本样式
		        WritableCellFormat textFormat = new WritableCellFormat();
		        textFormat.setAlignment(jxl.format.Alignment.CENTRE);

		        sheet.addCell(new Label(0, 0, "真实姓名",titleFormat));
				sheet.addCell(new Label(1, 0, "手机号",titleFormat));
				sheet.addCell(new Label(2, 0, "MAC地址",titleFormat));
				sheet.addCell(new Label(3, 0, "最新登录时间",titleFormat));
				sheet.addCell(new Label(4, 0, "用户标识",titleFormat));
				sheet.addCell(new Label(5, 0, "登录次数",titleFormat));

				for (int i = 0; i < pserLoginHistoryList.size();i++) {
					int j=0;
					userLoginHistory = pserLoginHistoryList.get(i);
					user = userLoginHistory.getUser();
					String phone = userLoginHistory.getCellphone();
					phone=phone.substring(0,3)+"****"+phone.substring(7);//手机号不让公开,就隐藏掉了
					sheet.addCell(new Label(j++,title+1,user != null ? user.getRealName() : Constants.NULL_STR,textFormat));//真实姓名
			        sheet.addCell(new Label(j++,title+1,phone,textFormat));//手机号
			        sheet.addCell(new Label(j++,title+1,userLoginHistory.getMac(),textFormat)); //MAC地址
			        sheet.addCell(new Label(j++,title+1,userLoginHistory.getLoginDate(),textFormat)); //最新登录时间
			        sheet.addCell(new Label(j++,title+1,user != null ? user.getUserTypeDsp() : "访客",textFormat));//用户标识
			        sheet.addCell(new Label(j++,title+1,Integer.toString(userLoginHistory.getLoginCount()),textFormat));//登录次数
		            title++;
				}
				title=0;
				pageNo++;
			}while(pageNo <= totalPage);

  然后第二次调用接口,就开始获取数据 do while循环插入到表格中

book.write();
book.close();
 IOUtil.download("userExportExcel.xls",path,response);

  最后一定要关闭资源,在调用下载方法就OK了

时间: 2024-10-20 16:35:04

导出为Excel文档的相关文章

支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人员轻松快速的从各种主流数据库中导出数据并存储于各种文件格式中.他支持从SQL Command, DataTable,ListView中导出数据并存储于MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CS

使用PHPExcel类库将数据导出为excel文档

下载PHPExcel类库,http://phpexcel.codeplex.com/,解压后在Class中找到PHPExcel文件夹和PHPExcel.php文件,拷贝到自己的项目代码中,以下是导出为excel文件的方法 <?php function export_data() { require_once('PHPExcel.php'); // 文档名称 $filename = 'filename'; // 创建 PHPExcel 对象 $objPHPExcel = new PHPExcel(

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的博客介绍过几篇关于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示. <使用Aspose.Cell控件实现Excel高难度报表的生成(一)> <使用Aspose.Cell控件实现Excel高难度报表的生成(二)> <使用Aspose.Cell控件实现Ex

Apache POI -- Java 导出Excel文档(笔记)

一.Action类 import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Met

POI导出EXCEL文档

package com.wiseweb.util.excel; import java.io.*; import java.util.*; import javax.swing.JOptionPane; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import com.wiseweb.pom.entity.BaiinfoPriceTime; public class Expo

struts2中利用POI导出Excel文档并下载

1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: 1 package com.tydic.eshop.action.feedback; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.FileInputStream; 6 import java.io.IOException; 7 import

Asp.net的对Excel文档的导入导出操作

刚刚初入职场,在休闲的时间写下了项目中用到的对Excel文档操作的方法以及总结,多的不说,直接上代码 public static void CreateExcel(DataSet ds, string FileName) { //resp = Page.Response; HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.Ch

Asp.net中导出Excel文档(Gridview)

主要思路,通过GridView来导出文档. 新建一个Aspx页面,页面创建GridView控件,后台绑定好数据源.然后load中直接打印即可导出 前台的GridView <asp:GridView ID="GridView1" BorderColor="Black" runat="server" AutoGenerateColumns="False" Font-Size="12px" Width=&q