Javascript 将数据库中的数据写入WORD文档的表格中

来源:互联网 发布:mac 文明5 意外退出 编辑:程序博客网 时间:2024/05/22 12:00

经理要我实现如题的功能,我费了九牛二虎之力,终于弄出个样子来。感觉收获颇非,这里用到了AJAXPRO得到数据库中的数据,然后在客户端写入WORD,贴出来,给用得到的朋友借鉴一下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="JSWriteWord.aspx.cs" Inherits="JSWriteWord" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
    
<script language="javascript" type="text/javascript" >
        
       
        
function WriteWord()
        
{
            
var oWord =  new ActiveXObject("Word.Application");   //建立Word对象
            var oDoc  = oWord.Documents.Add();    //建立文档对像.
            oWord.Application.Visible  = false;   //Word可视
            var oinsert  = oWord.Selection;    //建立插入点对像         
  
            oinsert.Font.color 
= 12345645;
            oinsert.Font.Bold 
= 1;
            
var title = "天景隆软件有限公司";
            oinsert.TypeText(title);      
//写入标题            
            setFormat(oinsert,title,22,1);    //设置标题字体大小和是否居中 
                       
            oinsert.Font.Bold 
= 1;            
            oinsert.TypeParagraph();   
// 换行
            oinsert.TypeParagraph();
            
var author ="作者:曾俊";
            oinsert.TypeText(author);
            setFormat(oinsert,author,
12,3);
            oinsert.TypeParagraph();
            
var toDay =  new Date();           
            
var thisDay ="日期:" + toDay.getFullYear() + ""+ (toDay.getMonth() + 1+ "" + toDay.getDate() + "";
            oinsert.TypeText(thisDay);
            setFormat(oinsert,thisDay,
12,3);
            oinsert.TypeParagraph();
            oinsert.TypeParagraph();
            oinsert.TypeParagraph();
            oinsert.Font.color 
= -16777216
            
            createTable(oDoc,oinsert,
"产品表");  //写入表格
            
            
            writebody(
"",oinsert,16,3,999999);
            oinsert.TypeParagraph();
            writebody(
"Google投身慈善事业 2600万美元用于捐赠投 ",oinsert,16,3,"黑体",9804560);
            oinsert.TypeParagraph();
            writebody(
"  Google.org开展慈善活动的多种方式使其可以通过投资获得一定的回报,正如其在eSolar公司的投资一样。",oinsert,12,3,"宋体",1);
            oinsert.TypeParagraph();
            oinsert.TypeParagraph();
            oinsert.TypeParagraph();
            writebody(
"乔布斯:Google开发Android平台没什么好 ",oinsert,16,3,"黑体",9804560);
            oinsert.TypeParagraph();
            writebody(
"  丁磊,网易CEO、曾经的中国首富,昨天以广东省第十一届人大代表的身份出现。尽管他悄悄出现在会场外,仍然遭到了媒体的围追堵截。“我是个新代表,但我还是愿意聊聊我关心的话题”,昨天中午,丁磊终于答应接受本报 ",oinsert,12,3,"宋体",1);
            
//writebody("END",oinsert,12,1);
            save(oDoc,oWord);
        }

        
        
function createTable(wordDocument,oinsert,tableName)
        
{
            writebody(tableName,oinsert,
18,3,"黑体",123457);
            
            oinsert.Font.Name 
= "宋体";//设置字体为宋体
            oinsert.Font.Size = 12;
            oinsert.Font.color 
= 6454984;            
            oinsert.ParagraphFormat.Alignment 
=1;        //设置对齐方式
            
            
var ds  = JSWriteWord.getList().value;             //调用Ajax方法,取得数据表中的值
            
            
var rownum=ds.Tables[0].Rows.length;//获取行数
            var cellnum = ds.Tables[0].Columns.length;
            wordDocument.Tables.Add(oinsert.Range,rownum,cellnum);
//新建表格,行数为talbe的行数,列数取最大的列数
            
            fillTable(ds,oinsert.Tables(oinsert.Tables.Count),oinsert);
        }

        
        
//根据ds的内容写入WORD
        function fillTable(ds,wordTable,oinsert)
        
{
            
var lastrows=0;
            
var rownum = ds.Tables[0].Rows.length;        
            
for( i = 0 ;i < rownum;i ++)
            
{
                
var rowcolumn = ds.Tables[0].Rows[i];
                
var colNO = 1;
                
var rows=0;

                
for(var a in rowcolumn)
                
{                    
                    oinsert.Font.Name 
= "宋体";//设置字体为宋体
                    oinsert.Font.Size = 12;
                    oinsert.Font.color 
= 6454984;
                    
                    oinsert.ParagraphFormat.Alignment 
=1;        //设置对齐方式
                    //alert( rowcolumn[a]+"");  
                    oinsert.TypeText(rowcolumn[a]+"");       //写入内容
                    oinsert.MoveRight(1,1);
                    colNO 
++;
                }
               
            }

        }

        
/*****************文本,插入点对像,字体大小,对齐方式,字体,颜色*******/
        
function writebody(text,oinsert,fontSize,align,fontName,ocolor)
        
{
            oinsert.TypeText(text);
            oinsert.MoveLeft(
1,text.length,1);   //选中文字
            oinsert.Font.Name = fontName;         //设置字体为宋体
            oinsert.Font.Size = fontSize;       //设置字符大小
            oinsert.Font.color = ocolor;
            oinsert.MoveRight(
1,1);              //右移一个字符,其实就是取消选定
            oinsert.ParagraphFormat.Alignment= align;   //居中对齐  1为居中,2为右对齐,3为左对齐
            
        }

        
        
function save(doc,oWord)
        
{           
            
var filename;
            
var da = new Date();
            filename 
= ""+da.getFullYear() + da.getMonth() + da.getDay() + da.getHours() + da.getSeconds() + da.getMinutes() + "";
            doc.SaveAs(
"F:/"+filename+".doc");
            oWord.Quit();
            
var lblmsg = document.getElementById("lblMessage");
        }

        
        
function setFormat(oinsert,text,fontSize,align){
            oinsert.MoveLeft(
1,text.length,1);   //选中文字
            oinsert.Font.Name = "宋体";         //设置字体为宋体
            oinsert.Font.Size = fontSize;       //设置字符大小
            oinsert.MoveRight(1,1);              //右移一个字符,其实就是取消选定
            oinsert.ParagraphFormat.Alignment= align;   //居中对齐  1为居中,2为右对齐,3为左对齐
        }

    
</script>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<input id="CreateWord" type="button" value="生成Word文档" onclick="CreateWordDoc()" />
        
<label id = "lblMessage" runat = "server"  style="font-size:large; color:Red"></label>
        
<asp:GridView ID="GridView1" runat="server">
            
        
</asp:GridView>
    
    
</div>
    
</form>
</body>
<script language="javascript" type ="text/javascript">
    
function CreateWordDoc()
    
{       
        WriteWord();
        
var lblmsg = document.getElementById("lblMessage");
        lblmsg.innerText 
= "生成成功";       
    }

</script>
</html>
原创粉丝点击