近一段时间要出一些报表,其中用户提出了一个关键的问题,就是要把页面上的数据另存为EXCEL,现在说说我们的做法:
第一种方法:直接在另存的时候,设置contenttype为EXCEL,即把页面保存为EXCEL的名字
response.setHeader("Content-type","application/xls");
response.setHeader("Content-Disposition", "attachment;filename=booking.xls");
response.setHeader("Content-Type", "application/vnd.ms-excel; charset=UTF-8");
request.setCharacterEncoding("utf-8");
下面是基于HTML的页面内容,如一个基于TABLE的表格数据,这样完全可以满足需要,但注意的是,不能把一个页面内的图片、脚本和样式等带进来,因此如果TABLE里面有背景之类的东东要拿掉,是一个干净整齐的数据表格,如果有颜色的话,可以加粗,这些东东用EXCEL打开没有问题。
此方法可以简单的解决我们把一个页面数据转存为EXCEL,也是较简单的方法,但是不能够存为多个SHEET
问题就是用户需要批量导出数据,按月分SHEET列,于是想到了下面的方法。
第二种方法:按照XML格式保存数据(我们可以用EXCEL打开个表格文件,另存为XML格式后可以看到这样的格式)
我们按照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="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>User</Author>
<LastAuthor>User</LastAuthor>
<Created>2009-03-20T02:15:12Z</Created>
<Company>Microsoft</Company>
<Version>12.00</Version>
</DocumentProperties>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>7815</WindowHeight>
<WindowWidth>14880</WindowWidth>
<WindowTopX>240</WindowTopX>
<WindowTopY>75</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Worksheet ss:Name="Sheet1"><!--Sheet1-->
<Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="5" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5"><!--一个表格-->
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="Number"><!--数据类型必须要加上-->1111</Data></Cell>
<Cell ss:MergeDown="3" ><!--跨2列-->><Data ss:Type="Number">2211</Data></Cell>
<Cell><Data ss:Type="Number">333</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="Number">111</Data></Cell>
<Cell ss:Index="3"><!--注意必须要加上INDEX,指明此列是的索引起始位置是几,因为上面一行跨了行,因此他是跨完后的列,如同--><Data ss:Type="Number">33</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="Number">11</Data></Cell>
<Cell ss:Index="3"><Data ss:Type="Number">33</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="Number">111</Data></Cell>
<Cell ss:Index="3" ss:MergeDown="1" ><Data ss:Type="Number">33</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="Number">11</Data></Cell>
<Cell><Data ss:Type="Number">333</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
上述代码另存为一个xml或是xls文件,通过EXCEL打开,就可以看到直观的效果,其中的worksheet item就是我们所说的SHEET,table是我们的表格数据,只要按照此种格式生成一个文件,就OK了,这种方法比较简单可行,只是在跨行和跨列的计算上不同于HTML的跨行跨列,一定要注意,并且大小写敏感,但是存起来比较方法,能够满足基于页面数据的按照SHEET多次导出,做了个简单的页面表格导成XML TABLE的例子,可以看看效果
第三种方法:即用Java Excel API进行数据的存储,此种方法网上介绍的较多,就不做详细的解释了,我本人还是对第二种方法感兴趣
上述方法供大家参考,不妥之处多请指正
分享到:
相关推荐
在Excel中,可以通过单击“文件”菜单项选择项中的“保存”或“另存为”选项,翻开“另存为”对话框,在“文件位置”下拉列表中选择考生文件夹所在位置;然后,在“文件名”文本框中输入工作簿文件名prac2.xls,接着...
保存文件时,可以通过文件菜单选择“保存”或“另存为”,指定保存位置并输入文件名,扩展名默认为.xlxs,表示Excel工作簿文件。 在学习Excel时,了解基本概念非常重要。例如,Excel工作表中的一格被称为单元格,每...
Excel批量生产Word文档是一种高效的方法,尤其适用于需要根据固定模板生成多个类似文档的情况。本文档主要介绍了一个使用Excel和Word结合,通过邮件合并功能实现批量生成Word文档的操作流程。 首先,你需要创建一个...
- **工作簿与工作表**:Workbook对象代表Excel文件,Sheet对象代表工作表,理解这两个对象的属性和方法,可以对Excel文件进行读写操作。 - **范围(Range)对象**:用于操作单元格或单元格区域,是最常用的VBA对象...
- 创建一个名为 `report` 的目录,用于存放填充了数据的报表文件。 **第二步:创建 C++Builder 工程** - 在 C++Builder 中新建一个工程。 - 在主窗体 Form1 上添加两个按钮:`SaveButton` 和 `ReadButton`,分别...
- **工作表**:工作簿中的每一页称为工作表,通常默认为Sheet1、Sheet2、Sheet3,可以存放各种数据和图表。 - **活动单元格**:当前正在编辑或操作的单元格,它的四周会有深色矩形框。 - **单元格地址**:每个...
5. 在Excel中,每个单元格可以被视为一个字段,用于存储数据。 6. OSI模型的传输层负责提供端到端的数据传输,以报文的形式进行。 7. LAN(Local Area Network)指的是局域网,是覆盖有限地理范围的计算机网络。 8. ...
分节功能,这样可以在文档的不同部分使用不同的页面布局。 9. 工作表复制:在Excel中,如果当前工作表是sheet5,复制到sheet8之前,新工作表标签名会是D. sheet5(2),表示sheet5的副本。 10. Excel列宽调整:可以...
熟悉Excel的工作环境,掌握启动、退出Excel软件的方法,理解工作簿、工作表、单元格的概念,学会基本的数据输入、编辑操作。 ##### 相关知识: 1. **启动与退出Excel**: - 通过桌面快捷方式或“开始”菜单启动...
若事先未打开Excel,那么将会把选择的表(Sheet)中的所有数据(直到最后为空值行;有空数据行但下面仍有数据行,继续插入数据;有引用公式当做有数据)转到MapGis里面; 2、如果需要把Excel中的线也输入到MapGis中,...
4. Excel功能与操作:Excel可以打开多个工作簿,选项C错误。工作簿默认扩展名为.xls,可以有多个工作表组成,具有表格制作、图表和数据库管理功能。 5. 搜索引擎控制符:AND与"+"类似,表示同时包含多个关键词。...
26.启动 Excel 后,系统自动创建一个新的电子表格文件,其文件名为(Sheet1),扩展名为(.xls 或 .xlsx)。 27.在 Excel 中用于返回参数的算术平均值与求和的函数分别是(AVERAGE)和(SUM)。 28.使用绝对引用...
- **知识点概述**:在Excel2003中,新建工作簿时,默认的工作表名称为`Sheet1`、`Sheet2`、`Sheet3`等。 ### 18. 表达式的分类 - **知识点概述**:表达式`X+1>X`属于关系表达式,用于比较两个值之间的大小关系。 #...
- **PROM与EPROM的区别**:EPROM是可以电擦除的PROM,可以多次编程。 #### 6. 计算机的运算速度描述 **知识点解析:** 计算机的运算速度通常用MIPS(Million Instructions Per Second,每秒百万条指令)来衡量。...
* “另存为”:输出流 2. 要创建 RandomAccessFile 类对象,以只读方式打开 c:\mymobile\blacknames.txt,正确的语句是:RandomAccessFile file = new RandomAccessFile("c:\\mymobile\\blacknames.txt", "r"); 3. ...