- 浏览: 104743 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
sqz10200:
...
urlrewrite 路径重写 -
侯上校:
Very Good !!!学习了……
tomcat jndi -
Rocket076:
简明易懂,学习了
java读取Excel -
captmjc:
myreligion 写道
引用(5)、record_buf ...
mysql性能优化的参数简介 -
mathgl:
xiaoZ5919 写道引用
(4)、max_connecti ...
mysql性能优化的参数简介
ExcleBuild.java//生成Execl所要的类 package com.richsoft.sxdl.session.tools.graphics; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import jxl.Workbook; import jxl.WorkbookSettings; import jxl.format.Alignment; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.VerticalAlignment; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import com.richsoft.sxdl.session.tools.graphics.Module.Position; /** * 生成Excle 封闭类 * @author Administrator * */ public class ExcleBuild { /** * 根据 json 串 封装数组 * @param json * @return */ public List<Module> getList(String json){ List<Module> list = new ArrayList<Module>();//生成Excle所要的数据 JSONArray jons = JSONArray.fromObject(json); int col_length = 0; //2维数组长 int row_length = jons.size(); //2维数组宽 for(int i=0;i<jons.getJSONArray(0).size();i++){ JSONObject ojb = jons.getJSONArray(0).getJSONObject(i); col_length+=ojb.getInt("colspan"); } //根据table封装数据 String[][] table = new String[row_length][col_length];//把json数组转化为2维数组 /** * 给2维数组赋初始值 */ for(int i=0;i<table.length;i++){ for(int j=0;j<table[i].length;j++){ table[i][j]="#"; } } /** * 给2维数组赋值 */ for(int i=0;i<row_length;i++){ JSONArray array = jons.getJSONArray(i); int col_index = 0;//记录二维数组到那个例 for(int j=0;j<array.size();j++){ Module m = new Module(); JSONObject ojb = jons.getJSONArray(i).getJSONObject(j); String title = ojb.getString("title"); int col_num = ojb.getInt("colspan"); int row_num = ojb.getInt("rowspan"); m.setTitle(title); if(col_num>1 || row_num>1){//跨行或跨例 if(col_num>1 && row_num>1){//根据json数据中colspan和rowspan都大于1时 就是即跨行,又跨例 for(int w=i;w<(i+row_num);w++){ for(int c=col_index;c<(col_index+col_num);c++){ if("#".equals(table[w][c])){//当二维数组还是初始值时(也就是/跨行或跨例没有影响这个单元格) m.addList(m.getPosition(w, c)); table[w][c] = title; }else{ for(int h=col_index;h<table.length;h++){ if(!"#".equals(table[w][h])){ continue; } m.addList(m.getPosition(w, h)); table[w][h]=title; break; } } } } col_index+=row_num; }else{//跨行或跨例 if(col_num>1){//只跨例时 for(int c=col_index;c<(col_index+col_num);c++){ if("#".equals(table[i][c])){ m.addList(m.getPosition(i, c)); table[i][c] = title; }else{ for(int h=col_index;h<table.length;h++){ if(!"#".equals(table[i][h])){ continue; } m.addList(m.getPosition(i, h)); table[i][h]=title; break; } } } col_index+=col_num-1;//当跨例时我们的两维数组的列只加了一个,所以还要把它跨几例也要加上 } if(row_num>1){//只跨行 for(int c=i;c<(i+row_num);c++){ if("#".equals(table[c][col_index])){ m.addList(m.getPosition(c, col_index)); table[c][col_index]= title; }else{ for(; col_index<table[i].length;col_index++){ if(!"#".equals(table[c][col_index])){ continue; }else{ m.addList(m.getPosition(c, col_index)); table[c][col_index] = title; break; } } } } } } }else{//没跨行也没有跨例 if("#".equals(table[i][col_index])){ m.addList(m.getPosition(i, col_index)); table[i][col_index] = title; }else{ for(;col_index<table[i].length;col_index++){ if(!"#".equals(table[i][col_index])){ continue; } m.addList(m.getPosition(i, col_index)); table[i][col_index] = title; break; } } } col_index++; list.add(m); } } return list; } /** * 生成成Excle * @param list 数据 * @param out 输出流 */ public static void writeTable(List<Module> list,OutputStream out){ try { WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10); WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD); WritableFont tableFont = new WritableFont(WritableFont.ARIAL, 12,WritableFont.NO_BOLD); WritableFont baodanFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD); WritableCellFormat wcf_center = new WritableCellFormat(NormalFont); wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); //把垂直对齐方式指定为居中 wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); //把水平对齐方式指定为居中 wcf_center.setAlignment(Alignment.CENTRE); wcf_center.setWrap(true); WorkbookSettings setting = new WorkbookSettings();//对excl基础信息的设置 java.util.Locale locale = new java.util.Locale("zh", "CN"); setting.setLocale(locale); setting.setEncoding("utf-8"); // 打开文件 WritableWorkbook book = Workbook.createWorkbook(out,setting); WritableSheet sheet = book.createSheet("第一页", 0); // 写入数据并关闭文件 for (Module module : list) { List<Position> plist = module.getList(); if(plist.size()>1){ sheet.mergeCells(plist.get(0).getCol(),plist.get(0).getRow() , plist.get(plist.size()-1).getCol(), plist.get(plist.size()-1).getRow()); Label label = new Label(plist.get(0).getCol(),plist.get(0).getRow(),module.getTitle(),wcf_center); sheet.addCell(label); }else if(plist.size()==1){ Label label = new Label(plist.get(0).getCol(),plist.get(0).getRow() , module.getTitle(),wcf_center); sheet.addCell(label); } } book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); } } }
Servlet package com.richsoft.sxdl.session.tools.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.richsoft.sxdl.session.tools.graphics.ExcleBuild; import com.richsoft.sxdl.session.tools.graphics.Module; public class DowlaodExcle extends HttpServlet { private static final long serialVersionUID = 1L; public DowlaodExcle() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=download.xls"); String json = request.getParameter("json"); ServletOutputStream out = response.getOutputStream(); ExcleBuild eb = new ExcleBuild(); List<Module> list = eb.getList(json); eb.writeTable(list,out); } public void init() throws ServletException { } }
package com.richsoft.sxdl.session.tools.graphics; import java.util.ArrayList; import java.util.List; public class Module { private String title; List<Position> list = new ArrayList<Position>(); public void addList(Position p){ list.add(p); } public Position getPosition(int row,int col){ return new Position(row,col); } class Position { private int row; private int col; public Position() { } public Position(int row,int col) { this.row = row; this.col = col; } public int getRow() { return row; } public void setRow(int row) { this.row = row; } public int getCol() { return col; } public void setCol(int col) { this.col = col; } } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public List<Position> getList() { return list; } public void setList(List<Position> list) { this.list = list; } }
function dowloadExcle(id){//id 是你表格id的名子 var trs = $("tr",$("#"+id)); var str = "["; $.each(trs,function(i,n){ var tds = $("td,th",$(n)); str+="[" $.each(tds,function(j,f){ var rowspan = $(f).attr("rowspan")?$(f).attr("rowspan"):1; var colspan = $(f).attr("colspan")?$(f).attr("colspan"):1; str+="{'title':'"+fileScript($.trim($(f).text()))+"','rowspan':"+rowspan+",'colspan':"+colspan+"},"; }); if(tds.length>0) str=str.substring(0,str.length-1); str+="],"; }); if(str.length>2) str=str.substring(0,str.length-1); str+="]"; var html ="<form style='display:none;' id='excleForm' action='"+path+"/tool/DowlaodExcle' method='post'>"; html+="<input type='hidden' id='exjson' name='json' value=\""+str+"\"/>"; html+="</form>"; if($("#excleForm").size()==0){ $(document.body).append(html); }else{ var obj = document.getElementById("exjson"); if(obj){ obj.value = str; } } document.getElementById("excleForm").submit(); }
String json = "[" + "[{'title':'所有仓库','rowspan':3,'colspan':1},{'title':'所有货架','rowspan':3,'colspan':1},{'title':'工器具统计','rowspan':1,'colspan':7}]," + "[{'title':'工器具总数','rowspan':2,'colspan':1},{'title':'在库','rowspan':1,'colspan':4},{'title':'出库','rowspan':1,'colspan':2}]," + "[{'title':'正常','rowspan':1,'colspan':1},{'title':'损坏','rowspan':1,'colspan':1},{'title':'报废','rowspan':1,'colspan':1},{'title':'试验过期','rowspan':1,'colspan':1},{'title':'使用出库','rowspan':1,'colspan':1},{'title':'试验出库','rowspan':1,'colspan':1}]," + "[{'title':'山西仓库1','rowspan':2,'colspan':1},{'title':'未分配货架工器具','rowspan':1,'colspan':1},{'title':'8','rowspan':1,'colspan':1},{'title':'5','rowspan':1,'colspan':1},{'title':'3','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1}]," + "[{'title':'货架总计','rowspan':1,'colspan':1},{'title':'8','rowspan':1,'colspan':1},{'title':'5','rowspan':1,'colspan':1},{'title':'3','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1}]," + "[{'title':'仓库总数','rowspan':1,'colspan':2},{'title':'8','rowspan':1,'colspan':1},{'title':'5','rowspan':1,'colspan':1},{'title':'3','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1},{'title':'0','rowspan':1,'colspan':1}]" + "]";
- 代码.rar (2.7 MB)
- 下载次数: 3
发表评论
-
算法的Java实现
2011-06-02 17:05 847引用: http://www.java3z.com/cwbw ... -
数据连接池
2010-05-26 16:53 674数据库 -
(mysql,sqlserver,orcal)数据连接
2010-05-14 10:44 949<?xml version="1.0" ... -
汉语转拼音
2010-05-12 08:12 817//汉语转拼音的方法 protected String ... -
dom和xas解析xml
2010-04-14 17:37 847xas 解析import java.io.FileIn ... -
数据连接池源理
2010-03-15 14:31 1991近年来,随着Internet/Intr ... -
jdbc DBUtils
2010-03-15 14:09 1103package jing.lian.kui.util; ... -
jdbc连mysql数据库
2010-02-23 15:10 902package cn.com.sohocat.util; ... -
读xml
2010-02-23 15:08 858/** * @#ConstantDAO.java * ... -
java 报表
2010-02-23 15:06 1280JavaReport-V3-Enterprise-Releas ... -
根椐ip得到地址
2010-02-23 14:59 680把QQWry.Dat放到WebRoot/WEB-INF下 就 ... -
MD5加密
2010-02-23 14:52 680package com.here.web.common; ... -
java图片验证码
2010-02-23 14:51 890package com.here.web.common; ... -
处理中文时的乱码问题
2010-02-23 14:49 749最近在做一个类似于百度的提示功能,可是遇到了dwr给后台传值是 ... -
jspsmart.upload
2010-02-23 14:48 974上传图1.jsp <table id=&q ... -
添加cookie最近浏览过的5职位
2010-02-23 14:47 773关键字: cookie if(document.all){ ... -
fckeditor 编辑器 web.xml配置
2010-02-23 14:44 808<servlet> <ser ... -
log4j.properties 配置
2010-02-23 14:43 738## log4j.rootLogger=error, cons ... -
cookie
2010-02-23 14:41 817public class Cookies { public ... -
验证码
2010-02-23 14:35 776public class OnLineImage { ...
相关推荐
在网页开发中,有时我们需要将HTML表格的数据导出到Excel文件中,以便用户可以方便地进行数据管理和分析。原生JavaScript实现的HTML表格导出功能,无需依赖后台接口,能够实现浏览器全兼容,大大提高了用户体验。...
通过jQuery技术,把页面上的表格导出Excel,导出时解决纯数据导出后显示科学计数法和日期型导出后为#号显示问题
本实例以"C#.NET Web页面嵌入Excel控件,网页中在线编辑EXCEL表格"为主题,详细讲解这一技术的实现方法和关键知识点。 首先,我们要理解的是,为了在Web页面上显示和编辑Excel,我们需要一个能够处理Excel文件的...
`excel.min.js`则是经过压缩和优化后的版本,适用于生产环境,以减少加载时间和提高页面性能。这两个文件都是JavaScript库,通过在layui表格中添加相应的操作按钮,实现一键导出数据到Excel的功能。 要使用这个插件...
2. **构建Excel导出逻辑**:在JSP中,我们可以创建一个新的JSP页面(如excel.jsp),该页面的主要任务是将HTML表格转换为Excel格式。这通常涉及到读取HTML表格的数据并生成Excel文件的二进制内容。 3. **设置响应头...
注意,是把页面上的table表格导成excel,此方式适用于很复杂的表格导出
在网页中嵌入Excel控件是一项实用的技术,它允许用户在网页环境中直接编辑和操作Excel表格,无需安装完整的Microsoft Office套件。这种技术基于Office Web Components(OWC),这是一个由微软开发的组件集,用于在...
本项目提供的"前端实现excel复制数据,粘贴到页面表格工具.zip"就是一个解决此类问题的实例。下面将详细介绍这个项目及其相关知识点。 首先,项目中包含三个文件:test.html、jquery.min.js和tableCJ。`test.html`...
在这个"页面表格数据生成excel文件下载"的例子中,我们可以看到两个关键的Java文件:DownController.java和ExcelUtil.java。下面我们将详细探讨这两个文件可能实现的功能和涉及的技术。 首先,`DownController.java...
它们允许开发者快速实现特定功能,如在这个案例中,将HTML表格转换成Excel格式。 4. **jquery.table2excel插件**:这个插件的工作原理是将HTML表格内容转换为符合Excel文件格式的数据,然后通过创建一个隐藏的`<a>`...
6. **用户手册**:提供的`将页面表格信息生成Excel文件供用户下载.txt`文档很可能是对整个过程的详细说明,包括如何配置项目、如何使用示例代码以及可能出现的问题和解决办法。 学习这个示例,你可以了解如何将Web...
综上所述,实现“在页面中导入Excel文件并以表格显示”的功能,涉及到前端的文件上传、数据解析、表格渲染,以及可能的后端处理和跨浏览器兼容性优化。使用合适的工具库和遵循最佳实践,可以高效地完成这一任务。
ASP.NET页面数据导出到Excel是常见的需求,用于将网页上的数据以电子表格的形式供用户下载和进一步处理。本文将详细介绍四种从ASP.NET页面导出数据到Excel的方法。 方法一: 这种方法利用了ASP.NET的Response对象,...
纯JS对页面表格进行EXCEL导出 ** 1.中间部分在style标签那种可以使用css样式对表格进行任意样式的修改 2.在tableid[removed]中可以对表格中的内容进行修改替换(其中放的内容就是导出后的表格内容) 3.需要引入xlsx....
"页面表格内容导入excelDemo 实现"这个标题所指的,是一个利用JavaScript插件tableexport.js来实现网页表格数据导出为Excel文件的示例项目。下面我们将详细探讨这个知识点。 首先,tableexport.js是一个流行的...
一个完整的导出html页面数据到excel表内,超简单
ASP(Active Server ...综上所述,将ASP页面转换成EXCEL报表的过程包括了动态生成HTML表格、设置HTTP响应头、处理数据和确保安全等多个环节。在实际开发中,可以根据需求灵活调整策略,以满足不同场景下的用户需求。
在Java、JSP和JavaScript中实现将统计表格保存为Excel文件是一个常见的需求,尤其是在数据分析和报表展示场景下。以下是一个详细的步骤和示例代码来帮助理解这个过程。 1. **前端JavaScript部分**: JavaScript...
根据给定的信息,本文将详细解释如何利用JavaScript技术将网页中的表格内容复制到Excel的一个工作表(Sheet)中。此方法对于需要频繁处理表格数据、并希望将其转换为Excel格式以便进行进一步分析或报告的人来说非常...