热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

请教如何在jsp代码中实现将查询结果写入客户端的excel

网上代码看了一堆感觉有点糊涂在这里请教高手如果利用jxl实现希望给个清晰明了的源代码谢谢啊不利用javabean的调用直接在jsp代码中实现客户端用户给该excel文件命名
网上代码看了一堆 感觉有点糊涂
在这里请教高手 如果利用jxl实现 希望给个清晰明了的源代码 谢谢啊
不利用javabean的调用 直接在jsp代码中实现 客户端用户给该excel文件命名

10 个解决方案

#1


帮顶了,我也想知道哈

#2


...不可能在客户端实现的,在服务端实现,然后传达室到客户端,

因为到了客户端, 已经不关 java 的事了

#3


JXL的找不到了,我这里有POI的
要不先将就看一下
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(new File(request.getRealPath("")+"/Template/Model.xls"))); 
workbook=new HSSFWorkbook(fs);

List vwPrintList=(List)request.getAttribute("vwPrintList");
HSSFSheet sheet = workbook.getSheet("belongingsPrint");

// 0.4相当于1厘米,顺序为左右上下页边距
sheet.setMargin((short)0,1.2);
sheet.setMargin((short)1,0.4);
sheet.setMargin((short)2,0.8);
sheet.setMargin((short)3,0.8);

//true:横向 false:纵向

sheet.getPrintSetup().setLandscape(false);

Iterator vwPrintIt=vwPrintList.listIterator();
response.setContentType(getContentType());

HSSFFont fOnt=workbook.createFont();
font.setFontHeightInPoints((short)10);
//设置单元格格式

HSSFCellStyle cellStyle = workbook.createCellStyle();
// cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);   
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);   
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);   
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);   
//设置自动换行
cellStyle.setFont(font);
cellStyle.setWrapText(true);

        HSSFCell cell = null;
HSSFRow sheetRow = sheet.createRow(0);
HSSFFooter footer=sheet.getFooter();

int totalPage=0;
int lsize=vwPrintList.size();
if(lsize%27==0)
{
totalPage=lsize/27;
}else
{
totalPage=lsize/27+1;
}
String[] title=new String[]{"年月日","登录号","书名","作者","出版社","出版日期","页卷数","来源","册数","价格","索取号","备注"};

for(int i=0;i sheet.setColumnWidth((short)(0),(short)(12*150) ); //日期
sheet.setColumnWidth((short)(1),(short)(13*150) ); //登陆号
sheet.setColumnWidth((short)(2),(short)(62*150) ); //书名
sheet.setColumnWidth((short)(3),(short)(36*150) ); //作者
sheet.setColumnWidth((short)(4),(short)(40*150) ); //出版社
sheet.setColumnWidth((short)(5),(short)(13*150) ); //出版日期
sheet.setColumnWidth((short)(6),(short)(18*150) ); //页卷数
sheet.setColumnWidth((short)(7),(short)(7*150) ); //来源
sheet.setColumnWidth((short)(8),(short)(7*150) ); //册数
sheet.setColumnWidth((short)(9),(short)(10*150) ); //价格
sheet.setColumnWidth((short)(10),(short)(28*150) ); //索书号

sheet.setColumnWidth((short)(11),(short)(8*150) ); //备注
if(i%27==0)
{
sheetRow=sheet.createRow((short)i);
for(short j=0;j<12;j++){
sheetRow.setHeight((short)(480));
cell=sheetRow.createCell((j));
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(title[j]);
        }
}else{
sheetRow = sheet.createRow((short)(i));
sheetRow.setHeight((short)(480));
VwPrint vwPrint=(VwPrint)vwPrintIt.next();

cell=sheetRow.createCell((short)0);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("");

cell=sheetRow.createCell((short)1);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getEntryNo());

cell=sheetRow.createCell((short)2);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getBookname());

cell=sheetRow.createCell((short)3);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getAuthor().trim(+" "+vwPrint.getOtherAuthor());

cell=sheetRow.createCell((short)4);
cell.setCellStyle(cellStyle);;
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getPublishAddress().trim()+":"+vwPrint.getPublisher());

cell=sheetRow.createCell((short)5);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getPublishDate());

cell=sheetRow.createCell((short)6);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getPageNum().trim()+vwPrint.getBookSize());

cell=sheetRow.createCell((short)7);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("");

cell=sheetRow.createCell((short)8);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getCopyNum());

cell=sheetRow.createCell((short)9);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getPrice());

cell=sheetRow.createCell((short)10);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(vwPrint.getIndexNo());

cell=sheetRow.createCell((short)11);
cell.setCellStyle(cellStyle);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("");
}

}
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();

#4


直接在jsp代码中实现

建议最好还是用JavaBean与JSP分开,代码多了,JSP页面就会显得很臃肿

#5


把查询的结果,显示在jsp页面中,点击导出excel按钮,执行下面的js方法!

function saveCode()   //导出excel
{  
       var winname = window.open('', '_blank', 'top=10000');  
       //var strHTML = document.all.show.innerHTML;  
       var strHTML = document.getElementById("show").innerHTML;
       winname.document.open('text/html', 'replace');  
       winname.document.writeln(strHTML);  
       winname.document.execCommand('saveas','','excel.xls');  
       winname.close();  
 }

show 是DIV的ID, div中是要导出的数据.

#6


不用那么麻烦吧


这样就可以了 

<%@ page cOntentType="application/vnd.ms-excel;charset=UTF-8" %>
<%@ page  import="com.feiji.treemodel.*,com.feiji.render.*,java.util.*,com.feiji.dto.*;"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/custom-page.tld" prefix="page" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">





  
    



  
  
  
    
   
     
        
     报表统计人员:  
         统计时间:<% java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat ("yyyy-MM-dd HH:mm"); out.print(sdf.format(new Date())); %> 
            
            
       
       
      
         
         
        
        
      
 
      
       
        
        
           
         序列
        
         
           课程名称
        
         
         登记数

        
         
        
             
        
         
        
      
         
        
           
         
          <%=index.intValue()+1%>
         
           
         
              对应你自己的要循环字段      
  
              这里也同上      
         

         
         
         
        
       
       
       
        
           
         
     
        
       
<%--       共有记录<%=rows %>条--%>
                      
      
    
  
        
         
        
   
    
    

      
    
  

#7


先在服务端上生成,然后用户操作保存到客户端。

#8


学习

#9


支持6楼的。。。
这个方法好

#10



function Button1_onclick() {
var oXL = new ActiveXObject("Excel.Application"); 
var oWB = oXL.Workbooks.Add(); 
var oSheet = oWB.ActiveSheet; 
var sel=document.body.createTextRange();
sel.moveToElementText(GridView1);
sel.select();
sel.execCommand("Copy");
oSheet.Paste();
oXL.Visible = true;
}
function Button2_onclick() {
//创建Word应用程序对象
var oWD = new ActiveXObject("Word.Application");
//向Word应用程序对象中添加一个文档对象,并取出其中的Range(0)
var oRange =oWD.documents.add().Range(0,0);
//根据HTML页面创建TextRange对象,以便定位到要打印的元素中
var sel = document.body.createTextRange();
//定位到TextRage对象中要打印的元素上,GridView1是要打印的元素的ID
sel.moveToElementText(GridView1);
//选中GridView1元素的所有HTML内容
sel.select();
//将选中的内容复制到剪切板上
sel.execCommand("Copy");
//粘贴到Word文档对象中去
oRange.Paste();
//显示Word程序和文档内容
oWD.Application.Visible = true;
//调用Word的打印程序
//oWD.application.printout();
//关闭word文档对象,参数0代表不保存文档
//oWD.application.activedocument.close(0);
//退出word程序
//oWD.application.quit();
}


第一个是导出到excel,第二个是导出到word,在jsp中触发下酒可以了。但是不知道你的浏览器能用ActiveX,否则要设置下

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 不确定性|放入_华为机试题 HJ9提取不重复的整数
    不确定性|放入_华为机试题 HJ9提取不重复的整数 ... [详细]
  • 本文介绍了一种从与src同级的config目录中读取属性文件内容的方法。通过使用Java的Properties类和InputStream,可以轻松加载并获取指定键对应的值。 ... [详细]
author-avatar
壹舊雲A
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有