javascript导出excel文件问题

sunqiusong 2010-06-23 04:13:16
思想采用xml转换为excel的思想,先用javascript生成excel的xml数据,然后导出,测试在firefox下通过。但是在IE和谷歌下测试能不过。请问是哪里出了问题(注:不考虑用activex)
window.open('data:application/vnd.ms-excel;base64,'+Base64.encode(grid.getExcelXml()),'globalexcelTmpIframe')
上面的grid.getExcelXml()方法生成的xml格式如下:
<?xml version="1.0" encoding="utf-8"?><ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office"><o:DocumentProperties><o:Title>TEST</o:Title></o:DocumentProperties><ss:ExcelWorkbook><ss:WindowHeight>9000</ss:WindowHeight><ss:WindowWidth>17450</ss:WindowWidth><ss:ProtectStructure>False</ss:ProtectStructure><ss:ProtectWindows>False</ss:ProtectWindows></ss:ExcelWorkbook><ss:Styles><ss:Style ss:ID="Default"><ss:Alignment ss:Vertical="Top" ss:WrapText="1" /><ss:Font ss:FontName="arial" ss:Size="10" /><ss:Borders><ss:Border ss:Color="#e4e4e4" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" /><ss:Border ss:Color="#e4e4e4" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" /><ss:Border ss:Color="#e4e4e4" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" /><ss:Border ss:Color="#e4e4e4" ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" /></ss:Borders><ss:Interior /><ss:NumberFormat /><ss:Protection /></ss:Style><ss:Style ss:ID="title"><ss:Borders /><ss:Font /><ss:Alignment ss:WrapText="1" ss:Vertical="Center" ss:Horizontal="Center" /><ss:NumberFormat ss:Format="@" /></ss:Style><ss:Style ss:ID="headercell"><ss:Font ss:Bold="1" ss:Size="10" /><ss:Alignment ss:WrapText="1" ss:Horizontal="Center" /><ss:Interior ss:Pattern="Solid" ss:Color="#A3C9F1" /></ss:Style><ss:Style ss:ID="even"><ss:Interior ss:Pattern="Solid" ss:Color="#CCFFFF" /></ss:Style><ss:Style ss:Parent="even" ss:ID="evendate"><ss:NumberFormat ss:Format="[ENG][$-409]dd-mmm-yyyy;@" /></ss:Style><ss:Style ss:Parent="even" ss:ID="evenint"><ss:NumberFormat ss:Format="0" /></ss:Style><ss:Style ss:Parent="even" ss:ID="evenfloat"><ss:NumberFormat ss:Format="0.00" /></ss:Style><ss:Style ss:ID="odd"><ss:Interior ss:Pattern="Solid" ss:Color="#CCCCFF" /></ss:Style><ss:Style ss:Parent="odd" ss:ID="odddate"><ss:NumberFormat ss:Format="[ENG][$-409]dd-mmm-yyyy;@" /></ss:Style><ss:Style ss:Parent="odd" ss:ID="oddint"><ss:NumberFormat ss:Format="0" /></ss:Style><ss:Style ss:Parent="odd" ss:ID="oddfloat"><ss:NumberFormat ss:Format="0.00" /></ss:Style></ss:Styles><ss:Worksheet ss:Name="TEST"><ss:Names><ss:NamedRange ss:Name="Print_Titles" ss:RefersTo="='TEST'!R1:R2" /></ss:Names><ss:Table x:FullRows="1" x:FullColumns="1" ss:ExpandedColumnCount="4" ss:ExpandedRowCount="10"><ss:Column ss:AutoFitWidth="1" ss:Width="170" /><ss:Column ss:AutoFitWidth="1" ss:Width="150" /><ss:Column ss:AutoFitWidth="1" ss:Width="100" /><ss:Column ss:AutoFitWidth="1" ss:Width="160" /><ss:Row ss:Height="38"><ss:Cell ss:StyleID="title" ss:MergeAcross="3"><ss:Data xmlns:html="http://www.w3.org/TR/REC-html40" ss:Type="String"><html:B><html:U><html:Font html:Size="15">TEST</html:Font></html:U></html:B></ss:Data><ss:NamedCell ss:Name="Print_Titles" /></ss:Cell></ss:Row><ss:Row ss:AutoFitHeight="1"><ss:Cell ss:StyleID="headercell"><ss:Data ss:Type="String">ISBN</ss:Data><ss:NamedCell ss:Name="Print_Titles" /></ss:Cell><ss:Cell ss:StyleID="headercell"><ss:Data ss:Type="String">BOOKNAME</ss:Data><ss:NamedCell ss:Name="Print_Titles" /></ss:Cell><ss:Cell ss:StyleID="headercell"><ss:Data ss:Type="String">AUTHOR</ss:Data><ss:NamedCell ss:Name="Print_Titles" /></ss:Cell><ss:Cell ss:StyleID="headercell"><ss:Data ss:Type="String">PUBLISHDATE</ss:Data><ss:NamedCell ss:Name="Print_Titles" /></ss:Cell></ss:Row><ss:Row><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">9787010036588</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">PDA</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">EE</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">2005-10-1</ss:Data></ss:Cell></ss:Row><ss:Row><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">9787010051932</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">DBA</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">FF</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">2005-10-1</ss:Data></ss:Cell></ss:Row><ss:Row><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">9787506022316</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">PCP</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">GG</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">2005-10-1</ss:Data></ss:Cell></ss:Row><ss:Row><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">9787506020046</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">ABC</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">DD</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">2005-10-1</ss:Data></ss:Cell></ss:Row><ss:Row><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">9787010051376</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">BBC</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">BB</ss:Data></ss:Cell><ss:Cell ss:StyleID="even"><ss:Data ss:Type="String">2005-9-1</ss:Data></ss:Cell></ss:Row><ss:Row><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">9787010048765</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">AA</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">QQ</ss:Data></ss:Cell><ss:Cell ss:StyleID="odd"><ss:Data ss:Type="String">2005-9-1</ss:Data></ss:Cell></ss:Row></ss:Table><x:WorksheetOptions><x:PageSetup><x:Layout x:CenterHorizontal="1" x:Orientation="Landscape" /><x:Footer x:Data="Page &P of &N" x:Margin="0.5" /><x:PageMargins x:Top="0.5" x:Right="0.5" x:Left="0.5" x:Bottom="0.8" /></x:PageSetup><x:FitToPage /><x:Print><x:PrintErrors>Blank</x:PrintErrors><x:FitWidth>1</x:FitWidth><x:FitHeight>32767</x:FitHeight><x:ValidPrinterInfo /><x:VerticalResolution>600</x:VerticalResolution></x:Print><x:Selected /><x:DoNotDisplayGridlines /><x:ProtectObjects>False</x:ProtectObjects><x:ProtectScenarios>False</x:ProtectScenarios></x:WorksheetOptions></ss:Worksheet></ss:Workbook>


...全文
1010 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei59188262 2012-11-25
  • 打赏
  • 举报
回复
我现在也遇到了这个问题,请问如何创建excel的xml数据呢
biaorger 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gj1111myl 的回复:]
grid.getExcelXml()这个方法找不到,怎么解决呀?
[/Quote]

我也遇到这个问题 api中都没有这个方法 请高手先说说 这方法是哪来的
gj1111myl 2010-11-24
  • 打赏
  • 举报
回复
grid.getExcelXml()这个方法找不到,怎么解决呀?
  • 打赏
  • 举报
回复
如果是超长的话,这样呢
var d=window.open('','globalexcelTmpIframe');
d.document.writeln('data:application/vnd.ms-excel;base64,'+Base64.encode(grid.getExcelXml()));
浪尖赏花 2010-06-23
  • 打赏
  • 举报
回复
恩,有可能是URL超长了,LZ用个短点的测试看看呢
sunqiusong 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lihui_shine 的回复:]

IE不支持这种方式
[/Quote]
http://en.wikipedia.org/wiki/Data_URI_scheme网上说IE只是受限,没说不支持,IE8是支持的,只是受限制
Internet Explorer 8: Microsoft has limited its support to certain "non-navigable" content for security reasons, including concerns that JavaScript embedded in a data URI may not be interpretable by script filters such as those used by web-based email clients. Data URIs must be smaller than 32 KiB.
"Data URIs are supported only for the following elements and/or attributes:
object (images only)
img
input type=image
link
CSS declarations that accept a URL, such as background, backgroundImage, and so on." -MSDN[4]
我上面的是不是不是link才不支持
wgale025 2010-06-23
  • 打赏
  • 举报
回复
ActiveX控件,或者你可以使用CSV格式的也可以用Excel打开。
sunqiusong 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lihui_shine 的回复:]

LZ可以参考下:http://blog.csdn.net/xsailer/archive/2009/09/11/4542142.aspx
[/Quote]
不考虑用ActiveX,如果能解决在谷歌下调用ActiveX可以考虑,关键一直都找不好的方法来解决这个问题。始终不能调用ActiveX插件
浪尖赏花 2010-06-23
  • 打赏
  • 举报
回复
浪尖赏花 2010-06-23
  • 打赏
  • 举报
回复
IE不支持这种方式

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧