实现方式如下:
页面设计:
<td width="100" align="center"><a href="#" onclick="doExport();return false;" class="blue bold">导出内容到excel</a></td>
function doExport(){
var dataV=window.showModalDialog("<c:out value='${ctx}'/>/task/dialog.jsp","","dialogWidth=250px;dialogHeight=220px");
if(dataV !=null && dataV != ""){
if(dataV == '1'){
var eleForm = $("pageQueryForm");
var lastAction = eleForm.action;
var ExportAll = $("ExportAll");
if(ExportAll != null){
eleForm.removeChild(ExportAll);
}
eleForm.action = "doExportExcel.action";
eleForm.submit();
eleForm.action = lastAction;
return;
}else if(dataV == '2'){
var eleForm = $("pageQueryForm");
var lastAction = eleForm.action;
var eleHiddenExportExcel = new Element("input",{type:"hidden",name:"ExportAll"});
eleHiddenExportExcel.wrap(eleForm);
eleForm.action = "doExportExcel.action";
eleForm.submit();
eleForm.action = lastAction;
return;
}
}
}
Action:
两个属性:
String fileNames;
InputStream excelStream;
提供get和set方法
public String doExport() throws TaException{
String result = "";
User user = (User) this.getSession().get("user");
if(user != null){
String ExportAll = this.getHttpServletRequest().getParameter("ExportAll");
List dataList = new ArrayList();
if(ExportAll == null){
log.debug("导出当前页面内容到excel");
this.projectService.queryPageProject(user, pageQueryForm,customDisplayWhere,orderQueryString,orgList);
dataList = pageQueryForm.getPageRecordList();
}else{
log.debug("导出所有容到excel");
dataList = this.projectService.queryAllProject(user,pageQueryForm,customDisplayWhere,orderQueryString,orgList);
}
HSSFWorkbook workbook = printExcel(tmpContent,tmpContentCn,dataList);
if(workbook != null){
try{
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
String month_ = new String(""+month);
if(month<10){
month_ = "0"+month;
}
int day = c.get(Calendar.DAY_OF_MONTH);
String day_ = new String(""+day);
if(day<10){
day_ = "0"+day;
}
this.exportExcel(workbook,year+month_+""+day_+"sxta.xls");
result = "outExcel";
}catch(IOException e){
e.printStackTrace();
message = "出错了!";
redirectTo = this.getHttpServletRequest().getContextPath()+"/task/listProject.action";
return SUCCESS;
}
}
}else{
log.debug("user is null");
message = "出错了!";
redirectTo = this.getHttpServletRequest().getContextPath()+"/task/listProject.action";
return SUCCESS;
}
return result;
}
private HSSFWorkbook printExcel(String tmpContent,String tmpContentCn,List dataList){
HSSFWorkbook workbook = null;
String[] titles_CN = tmpContentCn.split(",");
String[] titles_EN = tmpContent.split(",");
try{
//创建工作簿实例
workbook = new HSSFWorkbook();
//创建工作表实例
HSSFSheet sheet = workbook.createSheet("sxtaExcel");
//设置列宽
this.setSheetColumnWidth(titles_CN,sheet);
//获取样式
HSSFCellStyle style = this.createTitleStyle(workbook);
if(dataList != null){
//创建第一行标题
HSSFRow row = sheet.createRow((short)0);// 建立新行
for(int i=0;i<titles_CN.length;i++){
this.createCell(row, i, null, HSSFCell.CELL_TYPE_STRING,
this.getText(titles_CN[i]));
}
//给excel填充数据
for(int i=0;i<dataList.size();i++){
// 将dataList里面的数据取出来
Project project= (Project)dataList.get(i);
HSSFRow row1 = sheet.createRow((short) (i + 1));// 建立新行
boolean isOverTime = false;
for(int j=0;j<titles_EN.length;j++){
String tmpstr = "";
if (titles_EN[j].equals("name")){
this.createCell(row1, j, style, HSSFCell.CELL_TYPE_STRING,
project.getName());
}
……
}
}
}else{
this.createCell(sheet.createRow(0), 0, style,HSSFCell.CELL_TYPE_STRING, "查无资料");
}
}catch(Exception e){
e.printStackTrace();
}
return workbook;
}
//设置列宽
private void setSheetColumnWidth(String[] titles_CN,HSSFSheet sheet){
// 根据你数据里面的记录有多少列,就设置多少列
for(int i=0;i<titles_CN.length;i++){
sheet.setColumnWidth((short)i, (short) 3000);
}
}
//设置excel的title样式
private HSSFCellStyle createTitleStyle(HSSFWorkbook wb) {
HSSFFont boldFont = wb.createFont();
boldFont.setFontHeight((short) 200);
HSSFCellStyle style = wb.createCellStyle();
style.setFont(boldFont);
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("###,##0.00"));
//style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
//style.setFillBackgroundColor(HSSFColor.LIGHT_ORANGE.index);
return style;
}
//创建Excel单元格
private void createCell(HSSFRow row, int column, HSSFCellStyle style,int cellType,Object value) {
HSSFCell cell = row.createCell((short) column);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
if (style != null) {
cell.setCellStyle(style);
}
switch(cellType){
case HSSFCell.CELL_TYPE_BLANK: {} break;
case HSSFCell.CELL_TYPE_STRING: {cell.setCellValue(value.toString()+"");} break;
case HSSFCell.CELL_TYPE_NUMERIC: {
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(Double.parseDouble(value.toString()));}break;
default: break;
}
}
//写入输入流中
private void exportExcel(HSSFWorkbook workbook,String fileName) throws IOException{
fileNames = fileName;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);
baos.flush();
byte[] aa = baos.toByteArray();
excelStream = new ByteArrayInputStream(aa, 0, aa.length);
baos.close();
}
接下来,struts.xml中的配置:
<result name="outExcel" type="stream">
<param name="contentType">application/vnd.ms-excel</param> <!-- 注意这里的ContentType -->
<param name="inputName">excelStream</param>
<param name="contentDisposition">attachment;filename="${fileNames}"</param>
<param name="bufferSize">1024</param>
</result>
三个jar包:
OK
分享到:
相关推荐
以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...
POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...
总结来说,"poi-excel-handler" 是一个使用 Apache POI 实现的工具,它提供了根据模板导出和简单列表导出 Excel 的功能。通过利用 POI 的 API,它能够有效地处理大量数据,同时保持代码的可读性。在实际项目中,这样...
以上就是使用Java POI导出Excel的基本步骤。你可以根据实际需求调整代码,例如添加数据遍历、样式设置、图表生成等功能。确保正确管理资源,避免内存泄漏,特别是在服务器端处理大量数据时。记得在完成后关闭工作簿...
七、导出Excel文件 最后,将Workbook写入OutputStream或File,完成导出: ```java try (FileOutputStream out = new FileOutputStream("output.xlsx")) { workbook.write(out); } catch (IOException e) { e....
"poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...
本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...
poi作为导出excel常用的工具,方便快捷。对于excel指定下拉列表的列,如何生成呢?本文提供如何生成下拉列表的excel列
通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...
springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...
这个链接提供了一个详细的Java代码示例,演示了如何使用POI导出Excel。在实际开发中,你可以根据这个示例调整代码以满足自己的需求,比如添加更多的数据处理逻辑或自定义样式。记得在导入项目时,确保包含上述提到的...
POI导出Excel参考方法 POI(Poor Obfuscation Implementation)是一个Java的API,用于操作Microsoft Office文档,包括Excel、Word、PowerPoint等。下面是POI导出Excel参考方法的相关知识点: 1. POI的基本概念 ...
在这个"poi导出excel demo"项目中,你可能会看到如何组织这些步骤的示例代码,以及如何处理更复杂的功能,比如合并单元格、插入公式、读取数据等。通过学习和理解这个demo,你可以掌握使用Apache POI创建动态、...
Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...
标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...
要使用 Java POI 实现 Excel 导出,需要首先创建一个 HSSFWorkbook 或 XSSFWorkbook 对象,然后使用该对象创建一个工作表。下面是一个简单的示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; ...
在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...