zoukankan      html  css  js  c++  java
  • asp.net数据库表结构导出Word

    .aspx

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
        <style type="text/css">
        table{border-collapse:collapse}
        td{font-size: medium}
        .tr1 td{ background-color:Aqua;font-size :larger; }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>     
           <asp:Button runat="server" ID="btnExport2" Text="Fubon导出WORD" onclick="btnExport_Click" />
           <asp:Literal runat="server" ID="ltlBody"></asp:Literal>
        </div>
        </form>
    </body>
    </html>
    

     .aspx.cs

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ltlBody.Text = GetTableStr("FubonConnectionString");
                }          
    
            }
    
            string GetTableStr(string conStr)
            {
                DataBase db = null;
                if (string.IsNullOrEmpty(conStr))
                    db = new DataBase();
                else
                    db = new DataBase(conStr);
    
                string sql = @"
    select TableName = O.name,
    	OWNER = USER_NAME(O.uid),	
    	FieldId = C.colid,
        FieldName = C.name,
    	FieldType = T.name
    		+ CASE
    			WHEN T.name IN (N'decimal',N'numeric')
    				THEN N'(' + CAST(C.prec as varchar) + N',' + CAST(C.scale as varchar) + N')'
    			WHEN T.name = N'float' OR T.name like N'%char'
    								   OR T.name like N'%binary'
    				THEN N'(' + CAST(C.prec as varchar) + N')'
    			ELSE N''
    		  END,
        AllowNulls = 
              CASE
    				WHEN C.isnullable = 1 THEN N''
    				ELSE N' NOT'
    		  END	+ N' NULL',
    	FieldDescription = ISNULL(PFD.value, ''),
    	DefileLength = C.length,
    	FiledDefault = ISNULL(DF.text, N''),
    	IsIDENTITY = COLUMNPROPERTY(O.id, C.name, N'IsIdentity'),
    	IsComputed = COLUMNPROPERTY(O.id, C.name, N'IsComputed'),
    	IsROWGUID = COLUMNPROPERTY(O.id, C.name, N'IsRowGuidCol'),
    	IsPrimaryKey = CASE	
    						WHEN OPK.xtype IS NULL THEN 0
    						ELSE 1
    					END
    	FROM sysobjects O
    		JOIN syscolumns C
    			ON C.id = O.id AND OBJECTPROPERTY(O.id, N'IsUserTable') = 1
    		JOIN systypes T
    			ON T.xusertype = C.xusertype
    		LEFT JOIN syscomments DF
    			ON DF.id = C.cdefault
    		LEFT JOIN sys.extended_properties PFD 
    			ON PFD.major_id = C.id AND PFD.minor_id = C.colid		
    		LEFT JOIN sysindexkeys IDXK
    			ON IDXK.id = O.id AND IDXK.colid = C.colid
    		LEFT JOIN sysindexes IDX
    			ON IDX.indid = IDXK.indid AND IDX.id =IDXK.id AND IDX.indid NOT IN(0,255)
    		LEFT JOIN sysobjects OPK
    			ON OPK.parent_obj = O.id AND OPK.name = IDX.name AND OBJECTPROPERTY(OPK.id, N'IsPrimaryKey') = 1
    ORDER BY O.name, C.colid";
    
    
                DataTable dt = db.GetDataSet(sql).Tables[0];
                if (dt == null || dt.Rows.Count == 0) return "";
    
                string tableName = dt.Rows[0]["TableName"].ToString();
                const string tableStr = "<table border='1' width='100%'><tr><td align='center' style='background-color:Aqua'>TableName</td><td colspan='7'>";
                const string columnStr = "<tr class='tr1'><td align='center'>Id</td><td>ColumnName</td><td>DataType</td><td>DefaultValue</td><td>IsPrimaryKey</td><td>IsIdentity</td><td>AllowNulls</td><td>Description</td></tr>";
    
                StringBuilder sbTable = new StringBuilder();
                sbTable.Append(tableStr + tableName + "</td>" + columnStr);
                foreach (DataRow dr in dt.Rows)
                {
                    if (tableName != dr["TableName"].ToString())
                    {                  
                        sbTable.Append("</table><br />");
                        tableName = dr["TableName"].ToString();
                        sbTable.Append(tableStr + tableName + "</td>" + columnStr);
                    }
                    sbTable.AppendFormat("<tr><td align='center'>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td><td>{6}</td><td>{7}</td></tr>", dr["FieldId"].ToString(), dr["FieldName"].ToString(), dr["FieldType"].ToString(), dr["FiledDefault"].ToString().Replace("((", "").Replace("))", ""), dr["IsPrimaryKey"].ToString() == "1" ? "√" : "", dr["IsIDENTITY"].ToString().ToString() == "1" ? "√" : "", dr["AllowNulls"].ToString().Trim() == "NULL" ? "√" : "", dr["FieldDescription"].ToString());
    
                }
                sbTable.Append("</table>");
    
                return sbTable.ToString();
            }
                   
    
            protected void btnExport_Click(object sender, EventArgs e)
            {
                string header = string.Format("<table width='100%'><tr><td align='center' style='font-size:17px;font-weight:bolder'>{0}</td></tr><tr><td align='center' style='font-size:13px'>({1})</td></tr></table>", "数据库字典", DateTime.Now.ToString("yyyy年MM月dd日"));
                ResponseWrite(header + "<br />" + GetTableStr("FubonConnectionString"));
            }
    
            void ResponseWrite(string str)
            {
                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "UTF-8";
                Response.ContentEncoding = Encoding.GetEncoding("UTF-8");
                string filename = string.Format("数据库字典_{0}.doc", DateTime.Now.ToString("yyyyMMdd"));
                Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8));
                Response.ContentType = "application/ms-word";
                Response.Write(@"    
        <style type='text/css'>
        table{border-collapse:collapse}
        td{font-size:14px}
        .tr1 td{ background-color:Aqua;font-size:15px}
        </style>");
                Response.Write(str);
                Response.End();
            }   
    
  • 相关阅读:
    正则表达式(RegExp)
    文本处理工具(cut,sort,tr,grep等)
    权限和ACL练习题
    访问控制列表ACL
    权限和ACL访问控制-02-特殊权限
    数据库的高级操作
    数据表三范式&范式理论
    数据表之间的关系
    数据表的列类型
    修改表结构
  • 原文地址:https://www.cnblogs.com/gdjlc/p/2399518.html
Copyright © 2011-2022 走看看