您的位置:程序门 -> web 开发 -> javascript



怎么用js实现把图像导出到excel?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


怎么用js实现把图像导出到excel?[已结贴,结贴人:window221]
发表于:2007-03-07 10:57:30 楼主
table导出到excel都没问题,但一加图像,导出后图像默认丢失
发表于:2007-03-09 10:18:501楼 得分:0
发表于:2007-03-09 10:25:262楼 得分:0
该回复于2007-12-28 15:57:50被管理员或版主删除
发表于:2007-03-09 11:40:563楼 得分:50
<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> &nbsp;姓名 </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>
发表于:2007-03-09 11:52:474楼 得分:0
刚学了一招:
可以在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
发表于:2007-03-09 12:04:445楼 得分:0
你太历害了,又学习了

但有一点美中不足,图片没在单元格中,单元格不能随图片的大小而大小

有没有办法解决?
发表于:2007-03-09 13:42:346楼 得分:0
其实上面我已经给了方法,你在excel里面录制一个新宏,做的操作就是定义一个单元格的行高,然后单步执行看其代码,你就会找出改变单元格高度的方法来了。学会方法其实更有效,你就可以自己解决新遇到的问题了。如:

在宏代码中定义行高的语句为:
        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用来取这个图片的高度。这里假设一个单元格中只有一张图片,如果有多张则需要用循环一张一张加进去。当然如果既有文字又有图片,还得考虑文字也要加进去。
发表于:2007-06-12 14:46:247楼 得分:0
这样怎么办?

microsoft   office   excel   (0x800a03ec)
类   pictures   的   insert   方法无效


快速检索

最新资讯
热门点击