热门标签 | 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,否则要设置下

推荐阅读
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 本文详细介绍了如何使用 HTML 和 CSS 对文件上传按钮进行样式美化,使用户界面更加友好和美观。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文探讨了如何在Java中使用JAXB解组两个具有相同名称但不同结构的对象。我们将介绍一个抽象类Bar及其具体实现,并展示如何正确地解析XML文档以获取正确的对象实例。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 本文详细介绍了在使用 SmartUpload 组件进行文件上传时,如何正确配置和查找文件保存路径。通过具体的代码示例和步骤说明,帮助开发者快速解决上传路径配置的问题。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
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社区 版权所有