`
taote
  • 浏览: 33951 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Web导出excel的几种方法

阅读更多
在项目中我们经常遇到需要将报表导出成excel下载保存下来,在不同的要求和不同的资源情况下我们有不同的处理方式。在这里我将谈谈我所遇到的几种情况和遇到的一些问题。
总的来说可以分为:服务器端生成和浏览器端生成2种方法。

一、 服务器端生成就是:根据用户请求,获取相应的数据,使用poi/jxl, jacob/jawin+excel或是用数据拼html的table或是cvs纯文本的数据格式等。然后按.xls或是.cvs格式的文件的形式返回给用户,指定Content-Type:application/vnd.ms-excel ,浏览器就会提示要下载的文件是excel文件。一般情况下采用这种方式的话就可以根据具体要求对excel文件进行细致的处理,各方面样式和排列可以自己控制使用,而且是可以跨平台使用的。缺点就是毕竟需要根据不同的表格进行不断的coding,服务器也有一定的压力,这里我就不进行例子解释了。
二、浏览器端生成excel文件还没有特别完善的方案,这是因为js无法处理二进制。大概有以下几个方案,各有利弊
1.activex方式:使用js调用excel对象,传入需要的参数直接导出excel。
这种方式代码简单,速度较快,前段时间用过2种采用这种方式的方法,各有千秋:
A:页面table拷贝法:
var curTbl = document.getElementById(tableid);  
    var oXL = new ActiveXObject("Excel.Application");
    var oWB = oXL.Workbooks.Add();   //创建AX对象excel 
    var oSheet = oWB.ActiveSheet;   //获取workbook对象 
    var sel = document.body.createTextRange();   //激活当前sheet
    sel.moveToElementText(curTbl);   //把表格中的内容移到TextRange中  
    sel.select();   //全选TextRange中内容 
    sel.execCommand("Copy");  //复制TextRange中内容
    oSheet.Paste();       //粘贴到活动的EXCEL中        
    oXL.Visible = true;   //设置excel可见属性
如上代码可见,这个方法需要传入的就是table的ID,通过拷贝table复制到excel的方式执行,这个方法的特点是可见即所得,当然页面格子大小不能控制精细,只能得到当前页面展示的table部分,如table做了分页处理的话,直接导出的也只是当前页面部分。
B: 页面地址输出法:
var e = new ActiveXObject("Excel.Application");
var b = e.workbooks.open(src);
e.visible = true;
这个方法更加简单,src为所用导出页面的地址,就直接导出的这张页面为内容的excle,当然src也可以包含参数,但是经过试验,带参数会这页面第一次刷新的时候参数处理有些问题,需要捕获并处理,相信这个方法只导表有些大材小用,因为他导出的是整个页面。.
2.ie命令方式:将html或是csv输出到open的window,然后使用execCommand的saveas命令,存为csv或xls(IE 6 only)
3. 服务器端中转方式:将html的table或是拼接的csv传到服务器端,服务器端再按照Content-Type:application/vnd.ms-excel返回,浏览器就会按excel方式处理。与服务器端拼接相比,少了一次取数操作。
4. data协议方式:对于支持data协议的浏览器,可以将html或是csv先用js base64处理,然后前缀data:application/vnd.ms-excel;base64,,即可使浏览器将其中的数据当做excel来处理,浏览器将提示下载或打开excel文件,可惜的是ie不支持。extjs的官网有一个grid的plugin,实现导出xhtml格式的伪excel文件,就是这么做的。 

浏览器端只有第一种方案导出的是真正的biff格式的excel文件,其他方式都是文本格式。activex方式只能在windows平台的ie浏览器使用,而且需要降低ie的安全性,所以应用比较有限。复杂的excel文件,还是在服务器端用poi/jxl生成excel比较好。如果浏览器固定位ie6,浏览器端方式2是最好的方案。如果要降低服务器端cpu的计算压力,客户端方案3可行,而且跨平台(比poi/jxl方式少了取数和生成二进制文件)。如果是非ie浏览器,方案4也不失为一种好方法。

ps: 还有一个方案,就是让安装了ie和excel的用户在网页上右键,点击“导出到 Microsoft Excel”,然后可以选择要导出的table区域,点“导入”按钮,完成导入。

分享到:
评论

相关推荐

    DataGrid导出EXCEL的几个方法(WebControl)

    ### DataGrid导出EXCEL的几种方法:深入探讨与实践 在Web开发中,将数据导出为Excel格式是常见的需求之一,尤其是当涉及到大量数据分析和报表制作时。本文将详细解析如何使用ASP.NET中的DataGrid控件实现数据导出至...

    DataGrid导出EXCEL的几个方法(WebControl).rar

    接下来,我们将详细探讨几种常见的DataGrid数据导出到Excel的方法。 1. **Response.Write和HTML表格** 这是最基础的方法,它利用了Excel能够识别HTML表格的特性。首先,通过遍历DataGrid的Item对象,生成HTML表格...

    WEB页面导出为EXCEL文档的方法

    下面将详细介绍几种常见的方法。 1. **JavaScript**: - 使用`window.open()`函数配合`application/vnd.ms-excel` MIME类型:在HTML元素上添加`onclick`事件,触发`window.open()`,将网页内容重定向到一个新的...

    asp.net导出数据到Excel的几种方法 学习心得

    以下将详细讨论几种常见的导出方法,特别是基于控件的HTML渲染方式。 首先,我们来了解一下最常用的方法,即利用控件的`RenderControl`功能。这个方法的基本思路是,先将ASP.NET网页中的控件(如GridView、DataGrid...

    asp.net里导出excel表方法汇总

    下面将详细介绍 ASP.NET 中几种常见的导出 Excel 的方法及其实现原理。 #### 方法一:使用 DataSet 直接生成 Excel 文件 此方法适用于简单的情况,即直接将内存中的数据集(DataSet)转换成 Excel 文件格式。具体...

    lodop导出ExcelDemo

    5. 执行导出:调用LODOP的相应方法,执行数据到Excel的转换,并通常会提供一个下载对话框供用户保存文件。 "exe"标签可能指的是LODOP服务端程序的可执行文件,它在服务器端运行,处理来自浏览器的打印请求。用户在...

    C# 将数据导出到Excel汇总

    本文将基于给定的文件信息,深入探讨C#中将数据导出到Excel的几种方法,包括在ASP.NET环境中导出Excel的具体步骤。 #### ASP.NET中导出Excel的方法概览 在ASP.NET中导出数据到Excel主要分为两种基本策略:一是将...

    C#导出数据到EXCEL方法

    在ASP.NET Web应用程序中,经常需要将数据从datagridview组件导出到Excel文件,以便用户可以轻松地查看、编辑和共享数据。本文将详细介绍如何在C#中实现这个功能,并提供一个详细的实例源码和讲解。 首先,我们要...

    asp.net中如何导出excel表的几个方法

    ASP.NET 中导出 Excel 表的几个方法 在 ASP.NET 开发过程中,经常需要将数据导出到 Excel 表中,以便于用户查看和分析数据。这篇文章将介绍三种在 ASP...这些方法可以根据需要选择使用,以便将数据导出到 Excel 表中。

    ASP_NET导出Excel数据方法总结

    本篇文章将深入探讨几种在ASP.NET环境中导出Excel数据的方法,包括它们的工作原理、优缺点以及适用场景。 #### 方法一:引用COM组件 这种方法通过直接调用Excel COM组件,将数据从DataTable导入至Excel单元格,并...

    js导出excel的方法

    在Web开发中,经常需要将数据导出到Excel文件中,以便用户能够方便地查看或进一步处理这些数据。本文将详细介绍几种使用JavaScript实现导出数据到Excel的方法,包括利用ActiveX对象的方式以及纯JavaScript的方式。 ...

    Vue+axios+WebApi+NPOI导出Excel文件实例方法

    对于导出方案,有以下几种常见方法: 1. **使用location.href**:直接打开接口地址,但这种方法无法传递token,安全性较低,且仅支持GET请求。 2. **axios请求生成并保存文件**:先在服务器生成并保存文件,返回...

    asp.net里导出excel表方法汇总.

    ### ASP.NET 中导出 Excel 表格方法汇总 ...以上是 ASP.NET 中常见的几种导出 Excel 的方法,每种方法都有其适用场景。根据实际需求选择合适的方式可以提高开发效率,同时也能够更好地满足用户的使用需求。

    Ext Grid 导出Excel

    总结来说,"Ext Grid 导出Excel"这个话题涵盖了从JavaScript数据结构到Excel文件格式转换的过程,涉及到的主要技术有Ext JS的Grid和Store组件,以及第三方库SheetJS。这个过程对于那些需要提供数据导出功能的Web应用...

    WebExcel文件展现

    在ASP.NET中实现WebExcel文件展现,通常涉及到以下几个关键知识点: 1. **服务器控件**:ASP.NET提供了一些服务器控件,如Microsoft Office Interop库,可以直接在网页上嵌入Excel文件。不过,这种方式会消耗大量...

    ASP.NET导出到excel\aspnet里导出excel表方法汇总

    ### ASP.NET导出到Excel的方法汇总 #### 一、引言 在Web应用程序开发中,经常需要将数据导出为Excel文件,以便用户可以下载或进一步处理这些数据。ASP.NET提供多种方式来实现这一功能,包括但不限于直接使用.NET ...

    kettle循环导出数据到Excel中

    总之,Kettle循环导出数据到Excel是一种实用的数据处理方法,尤其适合处理大型数据集。它提供了强大的工具和灵活性,能够满足各种ETL需求,而不仅仅是数据导出。通过熟练掌握Kettle,IT专业人士能够更高效地管理和...

    easypoi导入导出excel表格.pdf

    在Java开发中,对于数据的导入导出,尤其是Excel表格,是一种非常常见的需求。而easypoi为我们提供了简洁的方式来实现这一功能。 ### eapoi导出导入概述 easypoi是一个基于Apache POI的简单易用的Java Excel操作...

    ASP.NET中把Gridview导出为EXCEL

    在ASP.NET开发中,将Gridview控件中的数据导出到Excel是一种常见的需求,这有助于用户方便地管理和处理大量数据。下面将详细讲解如何实现这一功能,并解决中文乱码问题。 首先,我们需要理解ASP.NET Gridview的基本...

    asp.net打印 导出excel方法

    本文将探讨两种主要的打印方法和导出Excel的几种策略,分析它们的优缺点。 首先,我们来看数据打印的方法: 1. **客户端脚本方式**: 这种方法主要依赖JavaScript来分析和提取页面内容,生成打印目标文档。优点...

Global site tag (gtag.js) - Google Analytics