`
風一樣的男子
  • 浏览: 62366 次
  • 性别: Icon_minigender_1
  • 来自: 粤东北山卡拉
社区版块
存档分类
最新评论

一种导出 excel 的简单方法

    博客分类:
  • Java
阅读更多
导出 excel 有时也挺头痛的
poi,jxl 未免太过复杂
js 方式有浏览器兼容问题,而且不能把页面的样式一般导出
其实有一种简单的方式可以导出格式良好的 excel
我之前就用这种方式做简单格式的 excel 导出的
今天有个技术群里有人问导出 excel 方法
于是做了个例子

第一步:打开 excel,设置一个 excel 模板, 然后另存为 XML 表格
第二步:用文本编辑器打开刚刚保存的模板文件,把代码复制粘贴到JSP页面,如 export.jsp
第三步:如展示页面一样写后台 Action, Action 跳转到对应的JSP页面(export.jsp)

JSP 页面代码如下

<%@ page language="java" pageEncoding="UTF-8"%>
<%@page contentType="application/vnd.ms-excel; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%response.addHeader("Content-Disposition: attachment", "filename=test.xls");%>
<!-- 以下为 excel 里定制的模板代码,打开 excel 设置格式,然后另存为 XML 表格 -->
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="<A href="http://www.w3.org/TR/REC-html40">http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Author>Ivan Self</Author>
  <LastAuthor>Ivan Self</LastAuthor>
  <Created>2010-07-21T11:40:53Z</Created>
  <LastSaved>2010-07-21T12:01:49Z</LastSaved>
  <Version>11.5606</Version>
 </DocumentProperties>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>8895</WindowHeight>
  <WindowWidth>11715</WindowWidth>
  <WindowTopX>240</WindowTopX>
  <WindowTopY>15</WindowTopY>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Center"/>
   <Borders/>
   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="12"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s21">
   <Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
   <Borders>
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
   </Borders>
   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="14" ss:Bold="1"/>
   <Interior ss:Color="#00CCFF" ss:Pattern="Solid"/>
  </Style>
  <Style ss:ID="s22">
   <Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
   <Borders>
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
   </Borders>
  </Style>
 </Styles>
 <Worksheet ss:Name="Sheet1">
  <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="3013" x:FullColumns="1"
   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
   <Row ss:Height="18.75">
    <!-- 标题 相当于后台传来的标题数组 -->
    <c:forEach begin="1" end="3" var="h">
     <Cell ss:StyleID="s21"><Data ss:Type="String">标题_${h}</Data></Cell>
    </c:forEach>
   </Row>
   <!-- 结果集 相当于后台传来的结果集 -->
   <c:forEach begin="1" end="3" var="rs">
   <Row>
    <Cell ss:StyleID="s22"><Data ss:Type="String">a_${rs}</Data></Cell>
    <Cell ss:StyleID="s22"><Data ss:Type="String">b_${rs}</Data></Cell>
    <Cell ss:StyleID="s22"><Data ss:Type="String">c_${rs}</Data></Cell>
   </Row>
   </c:forEach>
  </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <Selected/>
   <Panes>
    <Pane>
     <Number>3</Number>
     <ActiveRow>2984</ActiveRow>
     <ActiveCol>3</ActiveCol>
    </Pane>
   </Panes>
   <ProtectObjects>False</ProtectObjects>
   <ProtectScenarios>False</ProtectScenarios>
  </WorksheetOptions>
 </Worksheet>
</Workbook>


这样就如同JSP展示页面一样做导出了
把下面的代码也放到 action 中
<%response.addHeader("Content-Disposition: attachment", "filename=test.xls");%>

这样就可以多个导出需求(多少 action/方法)都对应一个JSP页面
每个需求设置不同的文件名,传不同的标题数组以及结果集就可以了

注意一点:定义模板时的行一定好大于实际导出的行,要不导出的文件无法打开

1
0
分享到:
评论

相关推荐

    从DBGrid导出到Excel表格 4种方法

    这是一种使用 Excel 组件来从 DBGrid 导出到 Excel 表格的方法。在该方法中,我们使用了 Excel97 组件,該组件提供了丰富的功能来操作 Excel 文件。我们首先创建了一个 TForm 对象,并在该对象中添加了几个控件,...

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

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

    .net里导出excel表方法汇总

    ### .NET中导出Excel表方法汇总 #### 标题:.NET里导出Excel表方法汇总 #### 描述:.NET里导出Excel表方法汇总 #### 标签:C#导出Excel #### 知识点: ##### 1. 引入Excel组件 在.NET环境中使用C#导出数据至...

    JSP页面导出EXCEL简单方法

    JSP是一种基于Java的动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,以实现服务器端的逻辑处理。在我们的场景中,JSP将用于生成Excel文件。 要将JSP页面的HTML表格导出为Excel,我们通常会利用HTTP响应...

    导出Excel功能,导出Excel功能,导出Excel功能

    一种常见策略是分批写入,或者使用内存流处理技术,减少内存占用。 5. **模板设计**:为了提供一致的视觉效果,可以预先设计Excel模板,包括固定头部、冻结行列、图表、公式等,然后将动态数据填充到模板中。 6. *...

    pb导出excel2007

    总结来说,"pb导出excel2007"是一种利用DLL技术在PowerBuilder中高效地将数据窗口数据导出到Excel 2007文件的方法,它避免了对Excel软件的依赖,提高了导出性能,适用于大量数据的处理场景。通过深入理解DLL的工作...

    组态王历史数据导出EXCEL表格的方法.docx

    组态王历史数据导出EXCEL表格的方法 组态王是一种工业自动化软件,具有强大的数据采集和处理能力。为了更好地对历史数据进行分析和处理,需要将其导出到EXCEL表格中。本文将介绍组态王历史数据导出EXCEL表格的方法...

    GridView导出Excel的方法

    在本篇文章中,我们将探讨一种简单的方法来将ASP.NET中的GridView控件中的数据导出到Excel文件中。这种方法利用了C#语言的强大功能以及ASP.NET框架提供的工具,使得导出过程既高效又简洁。 #### GridView简介 `...

    导出Excel方法大全

    本篇文章将详细介绍两种在ASP.NET中导出Excel的方法,主要关注如何从GridView控件导出数据。 1. 存储在服务器并提供下载链接 这种方法首先将导出的Excel文件存储在服务器的特定文件夹下,然后通过HTTP响应将文件...

    导出Excel的四种方法

    在IT行业中,Excel作为一种强大的电子表格工具,广泛用于数据处理、分析和报告。有时,我们需要将数据导出到Excel文件中以便进一步操作或共享。本文将详细介绍四种在编程环境中导出数据到Excel的方法,每种方法都有...

    jsp导出Excel;简单实用!导出Excel;导出Word

    在Java Web开发中,JSP(JavaServer Pages)是一种常用的动态网页技术,它允许开发者将HTML、CSS、JavaScript与Java代码结合在一起,用于构建交互式的Web应用。在某些场景下,我们可能需要从服务器端导出数据到Excel...

    POI导出Excel文件

    这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作Excel数据的有效方式。 首先,让我们详细了解一下Apache POI库。POI提供了一个API,允许开发者在Java应用程序...

    C++MFC 使用VS2010导出Excel的方法及步骤.doc

    在C++环境中,使用Microsoft Foundation Class (MFC) 库并结合Visual Studio 2010来导出数据到Excel是一种常见的需求。本教程将详细解释如何实现这一过程,包括必要的步骤和代码示例。 首先,你需要创建一个C++工程...

    lodop导出ExcelDemo

    【lodop导出ExcelDemo】是一个基于LODOP技术实现的JavaScript示例,它展示了如何通过LODOP组件将网页中的数据导出为Excel文件。这个功能在许多Web应用程序中非常实用,允许用户方便地保存和处理数据。下面将详细阐述...

    delphi 导出到excel的7种方法

    delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean; const xlNormal=-4143; var y : integer; tsList : TStringList; s,filename :string; aSheet :...

    js导出excel的方法

    第一种方法简单但仅限于IE浏览器;第二种方法同样依赖ActiveX对象,但通过遍历表格来填充Excel,更加灵活;第三种方法使用纯JavaScript实现,具有更好的跨浏览器兼容性。开发者可以根据实际需求选择合适的方法进行...

    VB6.0_导出excel_方法源代码_excel_vb6_vb6_VB_

    在VB6.0(Visual Basic 6.0)中,导出数据到Excel是一种常见的需求,主要用于数据分析、报表生成和数据交换。这个标题"VB6.0_导出excel_方法源代码_excel_vb6_vb6_VB_"指的是一个使用VB6.0实现的程序,它包含了将...

    plsql导出数据到excel的三种方法

    ### PL/SQL 导出数据至 Excel 的三种方法详解 #### 方法一:直接导出(适用于少量数据) 此方法较为直观简单,适用于导出数量不多的数据。具体步骤如下: 1. **查询数据**:首先,在PL/SQL Developer的SQL Window...

    易语言高级表格导出EXCEL

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语句,降低了编程的门槛,使得更多非计算机专业的人也能进行程序开发。在易语言中,处理表格数据和导出到Excel是一项常见的任务,这对于数据分析和报表...

    ext实现导出excel的功能。

    EXTJS提供了一种高效的方法来将数据导出到Excel格式,使得用户能够方便地处理和分析数据。在这个场景下,我们可以从以下几个关键知识点入手: 1. **EXTJS组件**:EXTJS的核心是其丰富的组件库,包括表格(Grid)、...

Global site tag (gtag.js) - Google Analytics