<HTML>
<HEAD>
<TITLE>将页面中指定表格的数据导入到Excel中</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function AutomateExcel()
{ var oXL = new ActiveXObject("Excel.Application"); //创建应该对象
var oWB = oXL.Workbooks.Add();//新建一个Excel工作簿
var oSheet = oWB.ActiveSheet;//指定要写入内容的工作表为活动工作表
var table = document.all.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).Font.Bold = true;//加粗
oSheet.Cells(i+1,j+1).Font.Size = 10;//字体大小
if(table.rows(i).cells(j).innerHTML.toLowerCase().indexOf('<img')!=-1){//如果其HTML代码包括<img
oSheet.Cells(i+1,j+1).Select();//选中Excel中的单元格
oSheet.Pictures.Insert(table.rows(i).cells(j).getElementsByTagName('img')[0].src);//插入图片
}
else{
oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向单元格写入值
}
}
}
oXL.Visible = true;
oXL.UserControl = true;
}
//-->
</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>张三</td>
<td>22</td>
<td>女</td>
<td><img src="http://www.csdn.net/Images/logo_csdn.gif" border="0"></td>
</tr>
<tr bgcolor="white">
<td>李四</td>
<td>23</td>
<td>男</td>
<td><Img src="http://images.csdn.net/20070306/API120[1].60.gif" border="0"></td>
</tr>
</table>
<input type="button" name="out_excel" onclick="AutomateExcel();" value="导出到excel">
</BODY>
</HTML>
<HEAD>
<TITLE>将页面中指定表格的数据导入到Excel中</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function AutomateExcel()
{ var oXL = new ActiveXObject("Excel.Application"); //创建应该对象
var oWB = oXL.Workbooks.Add();//新建一个Excel工作簿
var oSheet = oWB.ActiveSheet;//指定要写入内容的工作表为活动工作表
var table = document.all.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).Font.Bold = true;//加粗
oSheet.Cells(i+1,j+1).Font.Size = 10;//字体大小
if(table.rows(i).cells(j).innerHTML.toLowerCase().indexOf('<img')!=-1){//如果其HTML代码包括<img
oSheet.Cells(i+1,j+1).Select();//选中Excel中的单元格
oSheet.Pictures.Insert(table.rows(i).cells(j).getElementsByTagName('img')[0].src);//插入图片
}
else{
oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向单元格写入值
}
}
}
oXL.Visible = true;
oXL.UserControl = true;
}
//-->
</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>张三</td>
<td>22</td>
<td>女</td>
<td><img src="http://www.csdn.net/Images/logo_csdn.gif" border="0"></td>
</tr>
<tr bgcolor="white">
<td>李四</td>
<td>23</td>
<td>男</td>
<td><Img src="http://images.csdn.net/20070306/API120[1].60.gif" border="0"></td>
</tr>
</table>
<input type="button" name="out_excel" onclick="AutomateExcel();" value="导出到excel">
</BODY>
</HTML>
可以在Excel中:工具-->宏-->录制新宏,然后进行操作,最后停止录制。用工具-->宏-->单步执行 来调出相应操作的代码,然后尝试将其转换为相应的JS代码。如:上面的例子中:
oSheet.Cells(i+1,j+1).Select();//选中Excel中的单元格
oSheet.Pictures.Insert(table.rows(i).cells(j).getElementsByTagName('img')[0].src);
这两句是通过Excel中宏代码推出来的:
Range('D25').Select
ActiveSheet.Pictures.Insert("C:\Documents and Settings\anna\桌面\a.jpg").Select
Range("A1").Select //这一句是选中单元格
Selection.RowHeight = 40 //这一句是定义选中单元格的高度。改为JS:
oSheet.Cells(i+1,j+1).rowHeight=table.rows(i).cells(j).getElementsByTagName('img')[0].offsetHeight;其中:
1、oSheet是当前工作簿,Cells(i+1,j+1)是当前单元格,作用相当于上面的“Range("A1")”2、.rowHeight表示行高,相当于上面的RowHeight。在JS中由多个单词组合成的关键字通常第一个单词首字母小写,后面的单词首字母大写。3、table.rows(i).cells(j).getElementsByTagName('img')[0].offsetHeight用来取这个图片的高度。这里假设一个单元格中只有一张图片,如果有多张则需要用循环一张一张加进去。当然如果既有文字又有图片,还得考虑文字也要加进去。
类 Pictures 的 Insert 方法无效
excelOBJ.WorkBooks.Add;
var msoShapeRectangle=1;
excelOBJ.ActiveSheet.Shapes.AddShape(msoShapeRectangle, 40, 80, 140, 50).Fill.UserPicture("d://1.gif");
这句报错啊