3.winname.document.open(‘text/html’, ‘replace’);
open() 方法可打开一个新文档,并擦除当前文档的内容。
document.open(mimetype,replace)
参数描述
mimetype可选。规定正在写的文档的类型。默认值是 “text/html”。
replace 可选。当此参数设置后,可引起新文档从父文档继承历史条目。
说明
该方法将擦除当前 HTML 文档的内容,开始一个新的文档,新文档用 write() 方法或 writeln() 方法编写。
提示和注释
重要事项:调用 open() 方法打开一个新文档并且用 write() 方法设置文档内容后,必须记住用 close 方法关闭文档,并迫使其内容显示出来。
注释:属于被覆盖的文档的一部分的脚本或事件句柄不能调用该方法,因为脚本或事件句柄自身也会被覆盖。
4.winname.document.execCommand(‘saveas’,‘’,‘lmapp.xls’);
document.execCommand(sCommand,交互方式, 动态参数])
交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框,动态参数一般为一可用值或属性值。
如果把“.”后面的内容放进去的话就改变文件的格式属性了,从而也就得到了我们所需要的.xls excel格式。
阅读完源码之后,在实际操作过程中还是出现了问题,之间弹出框一闪而过,然后就没有任何效果了。
继续尝试其它方法,发现一个问题:是不是因为自己没有安装微软的excel,因为我知道自己安装的是wps。尝试安装一下微软的excel。
结果发现问题依旧,尝试以下代码:
<HTML>
<HEAD>
<TITLE>将页面中指定表格的数据导入到Excel中</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function AutoExcel(){
var oXL = new ActiveXObject("Excel.Application"); //创建应该对象
var oWB = oXL.Workbooks.Add();//新建一个Excel工作簿
var oSheet = oWB.ActiveSheet;//指定要写入内容的工作表为活动工作表
var table = document.getElementById("data");//指定要写入的数据源的id
var hang = table.rows.length;//取数据源行数
var lie = table.rows(0).cells.length;//取数据源列数
// Add table headers going cell by cell.
for (i=0;i<hang;i++){//在Excel中写行
for (j=0;j<lie;j++){//在Excel中写列
//定义格式
oSheet.Cells(i+1,j+1).NumberFormatLocal = "@";//将单元格的格式定义为文本
//oSheet.Cells(i+1,j+1).Font.Bold = true;//加粗
oSheet.Cells(i+1,j+1).Font.Size = 10;//字体大小
oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向单元格写入值
}
}
oXL.Visible = true;
oXL.UserControl = true;
oXL=null
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<table border="0" width="300" id="data" bgcolor="black" cellspacing="1">
<tr bgcolor="white">
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
</tr>
<tr bgcolor="white">
<td>0001</td>
<td>张三</td>
<td>22</td>
<td>女</td>
</tr>
<tr bgcolor="white">
<td>0002</td>
<td>李四</td>
<td>23</td>
<td>男</td>
</tr>
</table>
<input type="button" name="out_excel" onclick="AutoExcel();" value="导出到excel">
</BODY>
</HTML>
结果发现,其只可以运行在IE浏览器下,估计对IE的版本还会有限制,无语了。结果就是个这吗?难道只有IE才可以吗?更无语的是,下面的数据表格居然无法导出。
<table class="table" id="body_med_statement" border="1" cellpadding="0" cellspacing="0" style="border-collapse:collapse">
<tbody><tr>
<th>序号</th>
<th>药品名</th>
<th>药品ID</th>
<th>价格</th>
<th>数量</th>
<th>下单时间</th>
<th>订单ID</th>
<th>订单内容</th>
<th>购药者</th>
<th>处方药</th>
<th>药品种类</th>
</tr>
<!-- ngRepeat: item in querydata --><tr ng-repeat="item in querydata" class="ng-scope">
<td ng-bind="$index+1" class="ng-binding">1</td>
<td class="ng-binding">感冒灵颗粒</td>
<td><a ui-sref="#" class="ng-binding">TZ11020480</a></td>
<td class="ng-binding">8</td>
<td class="ng-binding">1</td>
<td class="ng-binding">2015-11-19 11:06:05</td>
<td class="ng-binding">LM2015081700001736</td>
<td class="ng-binding">[感冒灵颗粒]</td>
<td class="ng-binding">U13899990000</td>
<td class="ng-binding">处方</td>
<td class="ng-binding">中药</td>
</tr><!-- end ngRepeat: item in querydata --><tr ng-repeat="item in querydata" class="ng-scope">
<td ng-bind="$index+1" class="ng-binding">2</td>
<td class="ng-binding">感冒灵颗粒</td>
<td><a ui-sref="#" class="ng-binding">TZ11020480</a></td>
<td class="ng-binding">8</td>
<td class="ng-binding">1</td>
<td class="ng-binding">2015-11-19 11:19:38</td>
<td class="ng-binding">LM2015081700001980</td>
<td class="ng-binding">[感冒灵颗粒]</td>
<td class="ng-binding">U13899990000</td>
<td class="ng-binding">处方</td>
<td class="ng-binding">中药</td>
</tr><!-- end ngRepeat: item in querydata -->
</tbody>
</table>
继续尝试其它方法:
</pre><pre name="code" class="javascript">function method1(tableid){
var curTbl = document.getElementById(tableid);
var oXL;
try{
oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel
}catch(e){
alert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");
return false;
}
var oWB = oXL.Workbooks.Add(); //获取workbook对象
var oSheet = oWB.ActiveSheet;//激活当前sheet
var sel = document.body.createTextRange();
sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中
sel.select(); //全选TextRange中内容
sel.execCommand("Copy");//复制TextRange中内容
oSheet.Paste();//粘贴到活动的EXCEL中
oXL.Visible = true; //设置excel可见属性
var fname = oXL.Application.GetSaveAsFilename("将table导出到excel.xls", "Excel Spreadsheets (*.xls), *.xls");
oWB.SaveAs(fname);
oWB.Close();
oXL.Quit();
}
经过对比,发现这个方法最实用。决定对之进行改进。改进的第一步首先还是阅读源码。
var fname = oXL.Application.GetSaveAsFilename(“lmapp_.xls”, “Excel Spreadsheets (*.xls), *.xls”);
Application.GetSaveAsFilename 方法:简单来说就是显示另存为对话框,方便用户输入文件名进行保存。
语法:
expression.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
expression 必需。该表达式返回Application类型对象
InitialFilename Variant类型,可选。指定初始的文件名
FileFilter Variant类型,可选。一个指定文件筛选条件的字符串,格式如:“文本文件, *.txt”
FilterIndex Variant 类型,可选。指定默认文件筛选条件的索引号,取值范围为 1 到 FileFilter 指定的筛选条件数目之间
Title Variant 类型,可选。指定对话框标题
Vue
-
什么是MVVM?
-
mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?
-
组件之间的传值?
-
Vue 双向绑定原理
-
描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
-
虚拟 DOM 实现原理
-
Vue 中 key 值的作用?
-
Vue 的生命周期
-
Vue 组件间通信有哪些方式?
-
vue 中怎么重置 data?
-
组件中写 name 选项有什么作用?
-
Vue 的 nextTick 的原理是什么?
-
Vuex 有哪几种属性?