IE嵌入excel文档
需要在IE中嵌入excel文档(xls), 可用于解决在IE中一次性显示大量表格数据(10万个单元格以上)造成的性能问题, 经测试可以有2种方式, 如有可能的话, 还可以借用第3方服务, 如Google Docs或Microsoft SkyDrive Microsoft Excel Web App
1. 通过iframe方式嵌入
主要是利用IE可以直接调用关联程序打开对应格式的文档, 如调用pdf阅读器在IE中直接打开pdf.
excel也是一样, 可以直接通过IE打开本地或远程的excel文件, 通过拖拽(或从IE菜单中选择文件-打开)excel文件到IE可以打开本地文件.
但一般通过网络会采用iframe的方式来嵌入文件, 让IE自动通过关联软件打开文件
<iframe width="100%"
height="100%" src="
http://218.75.61.130/media_file/2005_10_29/20051029213808.xls
" />
Internet Explorer 中编辑 OLE 嵌入文档
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.8
修改 BrowserFlags 为 0
2. 通过ActiveX控件(OWC)方式嵌入
主要是利用微软的OWC组件(Microsoft Office Web
Components)来打开excel
客户端必须安装该组件才能使用, 可以打开的格式为xml(SpreadsheetML),
html(表格), csv
不支持直接打开xls, 因此必须转成符合他要求的上述格式
可以通过将excel文档另存为"XML 电子表格式 2003(*.xml)"的方式来获得这个xml文档
还支持csv和html格式(包含表格)对应属性为CSVURL, HTMLURL
spreadsheet.XMLURL
= 'SpreadsheetML.xml';
setExcelDisplayMode(spreadsheet);
setProtectMode(spreadsheet);
选择单元格冻结表格
spreadsheet.Cells(2,
2).Select();
spreadsheet.ActiveWindow.FreezePanes
= true;
function
setExcelDisplayMode(spreadsheet) {
spreadsheet.DisplayToolbar
= false;
spreadsheet.DisplayOfficeLogo
= false;
spreadsheet.DisplayWorkbookTabs
= false;
function
setProtectMode(spreadsheet) {
protection = spreadsheet.ActiveSheet.Protection;
protection.AllowFormattingRows
= true;
protection.AllowFormattingColumns
= true;
protection.AllowDeletingRows
= false;
protection.AllowInsertingRows
= false;
protection.AllowInsertingColumns
= false;
protection.AllowSorting
= false;
protection.Enabled
= true;
spreadsheet.ActiveWindow.EnableResize
= false;
</script>
</head>
<input
type="button" value="Read SpreadsheetML"
onclick="readSpreadsheetML()"
Microsoft Office Web Components(OWC) -->
<object
id="spreadsheet" style="width: 100%; height: 550px;"
classid="CLSID:0002E559-0000-0000-C000-000000000046"
</body>
</html>
SpreadsheetML.xml
----------------------------
<?xml version="1.0"
encoding="UTF-8" standalone="no"?>
<?mso-application
progid="Excel.Sheet"?>
<Workbook
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="
http://www.w3.org/TR/REC-html40
"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:x="urn:schemas-microsoft-com:office:excel">
<ss:Worksheet
ss:Name="Sheet1">
<ss:Table>
<ss:Row>
<ss:Cell><Data
ss:Type="String">Hello Excel!</Data></ss:Cell>
</ss:Row>
</ss:Table>
</ss:Worksheet>
</Workbook>