1、jsp表格导出到EXCEL优质资料(可以直接使用,可编辑 优质资料,欢迎下载)如何把JSP页面导出到Excel中?标签:excel 协议jsp2021-02-26 11:525277人阅读评论(5)收藏举报分类:05.Java(15)目录(?)+在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章,否则处于盲人摸象,毫无目的尴尬境地。本篇就是通过export jsp to excel找到的。原文地址:How to Export Web Page to Excel (in JSP)?本篇教程我们会看到如何把JSP页面导出到Excel中,会在已有的JSP页面中增加导出excel的功能。许多
2、时候对于用户来说,可以在excel中看到页面内容是很方便的。公共的方案会被导出成包含一些报告、数字等信息的表格。通过导出数据导出到excel中,最终用户也可以使用excel来做各种的分析,这一点对于你的java基本程序来实现,是有困难的。假设这就是你的jsp页面:这是对应的jsp源码(导出excel功能还没有加)。一个包含简单数据表格的jsp页面。javaview plaincopyprint?1. 3. 4. 5. 6. 7. ExporttoExcel-Demo8. 9. 10. 11. 12. 13. Sr.No.14. TextData15. NumberData16. 17. 18.
3、 19. %20. for(inti=0;i22. 23. 24. Thisistextdata25. 26. 27. 30. 31. 32. 33. 我们会添加一个“导出到excel”的超链接,它会把页面内容导出到excel文件中。那么这个页面会变成这个样子:下面是新版本的jsp源码。这个版本增加了“导出到excel”超链接,而且增加了相应的功能:javaview plaincopyprint?1. 3. 4. 5. 6. 7. ExporttoExcel-Demo8. 9. 10. 20. 21. 22. 23. Sr.No.24. TextData25. NumberData26. 27
4、. 28. 29. %30. for(inti=0;i32. 33. 34. Thisistextdata35. 36. 37. 40. 41. 42. 43. 44. 47. ExporttoExcel48. 51. 52. 导出网页到excel代码解释:1) 在这个版本的jsp页面中,当你点击“导出到excel”超链接的时候,请求会发送到相同的页面(excel.jsp),但是伴随url参数是 exportToExcel=YES.javaview plaincopyprint?1. ExporttoExcel2) JSP页面一开始会检查参数的正确性。如果这个参数值是YES的话,我们就会看到响
5、应报文中的内容类型,它标识了excel的文件名,并且会在用户的电脑上打开。javaview plaincopyprint?1. StringexportToExcel=request.getParameter(exportToExcel);2. if(exportToExcel!=null3. &exportToExcel.toString().equalsIgnoreCase(YES)4. response.setContentType(application/vnd.ms-excel);5. response.setHeader(Content-Disposition,inline;fil
6、ename=6. +excel.xls);7. 8. 3) 当你点击“导出到excel”超链接的时候,所有页面的内容会被导出excel中。但是,我们可能不想让“导出到excel”的超链接出现在excel中。为了阻止它的出现,我们增加了一个判断条件,判断exportToExcel参数是否出现。如果出现,就意味着内容会被导出到excel中,而且不包括超链接。反之,就意味着我们只是想浏览器显示网页,那么超链接会出现在页面上。javaview plaincopyprint?1. 4. ExporttoExcel5. 导出页面到excel的显示但你点击超链接,会弹出一个对话框,问你是否打开或保存文件。点
7、击打开,你会看到下面的内容:正如你所看得,导出的文件也会保存你在页面上的格式设置。在下一篇教程中,我们会看到如何导出页面到word文件中 How to Export Web Page to Word (in JSP)你可以下载本次教程中代码解释部分的eclipse工程文件。 JavaExcelExport.zip (5KB)完=注意:如果没有设置:response.setHeader(Content-Disposition, attachment; filename= + filename+.xls);则默认为当前页面.xls。比如testexcel.jsp-则生成testexcel.xls表
8、格扩展阅读:1在JSP中通过 协议生成excel和word:作者用过jxl之后,选择了 方式生成excel2JSP-EXCEL save defualt in .xls extension, open excel with in the browser:3利用 协议,更改输出文件:引出了 1.1协议的重要性4超文本传输协议- (修订版):详细解释了 1.1协议5Multiple tables data exported to multiple worksheets of the same excel sheet in java:一个excel中,存储在多个sheet用EXCEL制作一份万年历今
9、天我们介绍用Excel制作万年历的方法。这个万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧!本文所涉及到的函数有:1、AND (logical1,logical2, .)2、DATE (year,month,day)3、DAY (serial_number)4、IF (Logical,Value_if_true,Value_if_false)5、INT (number)6、MONTH (serial_number)7、NOW ()8、OR (logical1,logical2, .)1、启动EXCEL2
10、003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。 选中B1(合并后的)单元格,执行“格式单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二一年三月十四日”选项,“确定”退出,将日期设置成中文形式。注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,日,
11、WEEKDAY(B1,2);选中H1单元格,输入公式:=NOW()。选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。注意:上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。上述第二个函数
12、(NOW()用于提取当前系统日期和时间,也请将系统日期和时间调整准确。4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入19002050年份序列。同样的方法,在J1至J12单元格中输入112月份序列。5、选中D13单元格,执行“数据有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。同样的操作,将F15单元格数据有效性设置为“=$J$1:$J$12”序列。 注意:经过这样的设置以后,当我们选中D15(或F15)单元格
13、时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要查询的年、月值。6、选中A2单元格(不一定非得是A2哟),输入公式:=IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100INT(D13/100),29,28),IF(OR(F13=4,F13=6,F13=9,F13=11),30,31),用于获取查询“月份”所对应的天数(28、29、30、31)。注意:上述函数的含义是:如果查询“月份”为“2月”(F13=2)时,并且“年份”数能被400整除D13/400=INT(D13/400)
14、,或者(OR)“年份”能被4整除,但不能被100整除AND(D13/4=INT(D13/4),D13/100INT(D13/100),则该月为29天(也就是我们通常所说的“闰年”),否则为28天。如果“月份”不是2月,但是“4、6、9、11”月,则该月为30天。其他月份天数为31天。7、选中B2单元格,输入公式:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=B3,1,0)。再次选中B2单元格,用“填充柄”将上述公式复制到C2H2单元格中。注意:上述B2公式的含义是:如果“查询年月”的第1天是星期“7”(WEEKDAY(DATE)($D$13,$F$13,1),2)=B3
15、)时,在该单元格显示“1”,反之显示“0”),为“查询年月”获取一个对照值,为下面制作月历做准备。上述C2H2单元条中公式的含义与B2相似。在用拖拉法复制公式时,公式“绝对引用”的单元格(加了“$”号的,如“$D$13”等)不会发生改变,而“相对引用”的单元格(没有加“$”号的,如“B3”等),则会智能化地发生变化,例如在E2单元格中,“B3”变成了“E3”,整个公式成为:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=E3,1,0)。8、选中B6单元格,输入公式:=IF(B2=1,1,0)。选中B7单元格,输入公式:=H6+1。用“填充柄”将B7单元格中的公式复制到B8
16、、B9单元格中。分别选中B10、B11单元格,输入公式:=IF(H9=A2,0,H9+1)和=IF(H10=A2,0,IF(H100,H10+1,0)。选中C6单元格,输入公式:=IF(B60,B6+1,IF(C2=1,1,0)。用“填充柄”将C6单元格中的公式复制到D6H6单元格中。选中C7单元格,输入公式:=B7+1。用“填充柄”将C7单元格中的公式复制到C8、C9单元格中。同时选中C7C9单元格,用“填充柄”将其中的公式复制到D7H9单元格中。选中C10单元格,输入公式:=IF(B11=$A$2,0,IF(B110,B11+1,IF(C6=1,1,0)。用“填充柄”将C10单元格中的公式
17、复制到D10H10单元格和C11单元格中。至此,整个万年历(其实没有万年,只有从19002050的151年)制作完成。下面,我们一起来将其装饰一下。9、选中相应的单元格,利用工具栏上的相应按钮,设置好字体、字号、字符颜色等。选中相应的单元格,打开“单元格格式”对话框,在“对齐”标签下,设置好单元格中文本的对齐方式(通常情况下,垂直对齐可以一次性设置为“居中”,水平“对齐”根据具体情况设置)。同时选中I列和J列,右击鼠标,选“隐藏”选项,将相应的列隐藏起来,使得界面更加友好。用同样的方法,将第2和第3行也隐藏起来。10、选中B5H11单元格区域,打开“单元格格式”对话框,进入“边框”标签,选择好
18、“颜色、样式”,并“预置”好边框范围,然后“确定”退出,为月历加上边框。11、执行“工具选项”命令,打开“选项”对话框(如图4),在“视图”标签下(通常是默认标签),清除“零值”和“网格线”复选框中的“”号,“确定”退出,让“零值”和“网格线”不显示出来。12、将B14H14和B15H15单元格分别合并成一个单元格,并在B14和B15单元格中输入公式:=IF(AND(MONTH(D1)=1,DAY(D1)=1),新的新气象!加油呀!,IF(AND(MONTH(D1)=3,DAY(D1)=8),向女同胞们致敬!,IF(AND(MONTH(D1)=5,DAY(D1)=1),劳动最光荣,IF(AND
19、(MONTH(D1)=5,DAY(D1)=4),青年是祖国的栋梁,IF(AND(MONTH(D1)=6,DAY(D1)=1),原天下所有的儿童永远快乐,0)和=IF(AND(MONTH(D1)=7,DAY(D1)=1),党的恩情永不忘,IF(AND(MONTH(D1)=8,DAY(D1)=1),提高警惕,保卫祖国!,IF(AND(MONTH(D1)=9,DAY(D1)=10),老师,您辛苦了!,IF(AND(MONTH(D1)=10,DAY(D1)=1),祝我们伟大的祖国繁荣富强,0)。 设置好B14和B15单元格的字体、字号、字符颜色。注意:上述公式的含义是:如果当前日期逢到相关的节日(如“
20、元旦”等),则在B14或B15单元格显示出相应的祝福语言(如“新的新气象!加油呀!”,参见图5)。由于IF函数只能嵌套7层,而节日数量超过7个(我们这里给出了9个),因此,我们用两个单元格来显示。 13、执行“格式工作表背景”命令,打开“工作表背景”对话框(如图6),选择一张合适的图片后,按“插入”按钮,将其衬于工作表文字下面。14、在按住“Ctrl”键的同时,单击D13和F13单元格,同时选中两个单元格,开“单元格格式”对话框,切换“保护”标签(如图7),清除“锁定”前面复选框中的“”号,“确定”退出。15、执行“工具保护保护工作表”命令,打开“保护工作表”对话框(如图8),两次输入密码后,
21、确定退出。注意:经过这样的设置后,整个工作表中除了D13和F13单元格中的内容可以改变外,其它单元格中的内容均不能改变,保证了万年历的使用可靠性。在VB中操纵Excel 一Excel对象模块 Application 对象 | 集合 - |-Assistant |-Addins(Addin) |-AutoComect |-OLEDBErrors |-Debug |-CommandBars(CommandBar) |-VBE |-Dialogs(Dialog) |-WorksheetFunction |-RecentFilds(RecentFile) |-DefaultWebOptions |-W
22、indows(Window) |-LanguageSettings |-Workbooks(Workbook) |-Filesearch |-Names(name) |-AnswerWizard |-ODBCErrors 最上层的Application是指整个应用程序,其中最常用到的Workbooks代表活页簿集合,在其后的括号内的Workbook是指一个工作簿。 在VB中要打开Excel,首先要引用Microsoft Excel 9.0(或8.0)Object Lobrary。 打开的步骤是:(1)定义两个变量,数据类型指定为Excel.ApplicationExcel.Workbook.
23、(2)激活Excel应用程序。(3)打开工作簿(我们假设在当前路径下有一个工作簿students.xls)。 代码如下: Option Explicit Public appExcel As Excel.Application Public wbExcel As Excel.Workbook Private Sub Setup_Excel_object() Set appExcel = CreateObject(excel.application) Set wbExcel = appExcel.Workbooks.Open(App.Path & students.xls) appExcel.V
24、isible = True 使对象可见 End Sub 二工作表对象Worksheet Workbooks对象有一个集合对象工作表Worksheets,,用来放工作表相关的资料。 Workbooks(workbook) 对象 | 集合 - |-HTMLProjcet |-Publishobjects |-RoutingSlip |-DocumentProperties |-Areas |-Worksheets |-WebOptions |-Names |-VBProject |-CustomViews |-CommandBars |-PivotCaches |-Windows |-Styles
25、 |-Charts 调用方法是声明一个工作表变量,用For-Each循环方式可以读取集合对象Workbooks里的所有工作表名。 代码如下: Dim temp As Excel.Worksheet For Each temp In wbExcel.Worksheets wbExcel是上面代码中声明的Workbook FORM1.Combo1.AddItem temp.Name Next 三读取工作表某个选取范围的内容。 要读取工作表某个范围单元格,可先定义一个Excel范围对象变量,然后使用Rows或Columns函数指定某行或某列的范围,范围单元格(Cells)地址以目前被选取范围为基准。
26、具体方法如下: (1)设置工作表对象变量操作哪个工作表; (2)选取工作表的某行或某列; (3)在上面的选取范围内读取某个单元格内容。 代码如下: Dim Tempsheet As Excel.Worksheet 定义Excel工作表 Dim TempRange As Excel.Range 定义Excel工作表范围变量 第一步:选取工作表Sheet1 Set Tempsheet = appExcel.Worksheets(sheet1) 第二步:选取第二行(以这行为第一行) Set TempRange = Tempsheet.Rows(2) 第三步:读取范围内第一行第二列的单元格 Text1
27、.Text = TempRange.Cells(1, 2) 四其他 用TempRange.Find().Column方法可以查找目前范围内第一行的第一个空白单元格 如何实现VB与EXCEL的无缝连接 2003-02-17吴刚yeskyVB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。一、 VB读写EXCEL表:VB本身提自动化功能可以读
28、写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从工程菜单中选择引用栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择确定。表示在工程中要引用EXCEL类型库。2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet 3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject(Excel.Application)
29、 创建EXCEL对象Set xlBook = xlApp.Workbooks.Open(文件名) 打开已经存在的EXCEL工件簿文件xlApp.Visible = True 设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets(表名) 设置活动工作表xlSheet.Cells(row, col) =值 给单元格(row,col)赋值xlSheet.PrintOut 打印工作表xlBook.Close (True) 关闭工作簿xlApp.Quit 结束EXCEL对象Set xlApp = Nothing 释放xlApp对象xlBook.RunAutoM
30、acros (xlAutoOpen) 运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) 运行EXCEL关闭宏 4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。二、 EXCEL的宏功能:EXCEL提供一个Visual Basic编辑器,打开Visual Basic编
31、辑器,其中有一工程属性窗口,点击右键菜单的插入模块,则增加一个模块1,在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacro
32、s (xlAutoClose) 来运行启动宏和关闭宏。三、 VB与EXCEL的相互勾通:充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。四、举例:1、在VB中,建立一个FORM,在其上放置两个命
33、令按钮,将ommand1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序:Dim xlApp As Excel.Application 定义EXCEL类 Dim xlBook As Excel.Workbook 定义工件簿类Dim xlsheet As Excel.Worksheet 定义工作表类 Private Sub Command1_Click() 打开EXCEL过程If Dir(D:tempexcel.bz) = Then 判断EXCEL是否打开Set xlApp = CreateObject(Excel.Application
34、) 创建EXCEL应用类xlApp.Visible = True 设置EXCEL可见Set xlBook = xlApp.Workbooks.Open(D:tempbb.xls) 打开EXCEL工作簿Set xlsheet = xlBook.Worksheets(1) 打开EXCEL工作表xlsheet.Activate 激活工作表xlsheet.Cells(1, 1) = abc 给单元格1行驶列赋值xlBook.RunAutoMacros (xlAutoOpen) 运行EXCEL中的启动宏ElseMsgBox (EXCEL已打开) End IfEnd SubPrivate Sub Command2_Click()