第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(4)

本文介绍了一个使用 ASP.NET 将数据库元数据导出到 Word 的方法。通过 C# 编程实现从 SQL Server 获取表名及字段信息,并以 HTML 格式输出到 Word 文档中,方便进行数据库设计审查。

private const string connstr = "Data Source=SERVER;Initial Catalog=Test;User ID=sa;Password=sa";
    
private readonly SqlSchemaProvider provider = new SqlSchemaProvider(connstr);

    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            
this.rptData.DataSource = provider.GetTables();
            
this.rptData.DataBind();
        }
    }


    
/// <summary>
    
/// 
    
/// </summary>
    
/// <param name="obj"></param>
    
/// <returns></returns>
    public string OutputNullable(bool nullable)
    {
        
return nullable ? "<span style='font-family:宋体'>是</span>" : "<span style='font-family: 宋体; color: red'>否</span>";
    }

    
public string ColumnInfo(string tablename)
    {
        StringBuilder result 
= new StringBuilder();
        IList
<ColumnInfo> columns = provider.GetTableColumns(tablename);

        
foreach (ColumnInfo column in columns)
        {
            result.AppendFormat(
@"<tr>
  <td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
  border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{0}</span></p>
  </td>
  <td width=84 valign=top style='width:63.0pt;border-top:none;border-left:none;
  border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{1}</span></p>
  </td>
  <td width=51 valign=top style='width:38.25pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{2}</span></p>
  </td>
  <td width=71 valign=top style='width:53.55pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoNormal align=center style='text-align:center'>{3}</p>
  </td>
  <td width=71 valign=top style='width:53.55pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{4}</span></p>
  </td>
  <td width=95 valign=top style='width:71.3pt;border-top:none;border-left:none;
  border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{5}</span></p>
  </td>
  <td width=92 valign=top style='width:69.05pt;border-top:none;border-left:
  none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  padding:0cm 5.4pt 0cm 5.4pt'>
  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{6}</span></p>
  </td>
 </tr>
", column.Name, column.DataType, column.Length, OutputNullable(column.Nullable), 
                OutputValue(column.DefaultValue),
                OutputIdentity(column.Identity, column.IdentitySeed, column.IdentityIncrement),
                OutputValue(column.ColumnDesc));
        }

        
return result.ToString();
    }

    
//<span style='font-family: 宋体'>自动增长</span><span lang="EN-US">(1) </span><span style='font-family: 宋体'>
    
//                        不用于复制</span>

    
/// <summary>
    
/// 输出其他
    
/// </summary>
    
/// <param name="obj"></param>
    
/// <returns></returns>
    public string OutputIdentity(int identity, int seed, int increment)
    {
        
if (identity == 1 && seed == 1 && increment == 1)
            
return "<span style='font-family: 宋体'>自动增长</span><span lang='EN-US'>(1) </span>";
        
else
            
return "&nbsp;";
    }

    
private string OutputValue(string obj)
    {
        
if (string.IsNullOrEmpty(obj))
            
return "&nbsp;";
        
else
            
return obj;
    }

}
    代码说明:
这里是嵌套输出的表格,注意处理为空的情况,否则表格可能不完整,大家可以根据实际情况进行修改。

 

 

大家直接把页面上的表格全选然后复制到Word里面即可,这里注意了,我试过直接另存为word,但是版式不对,但是直接复制到Word里面是可以的。



本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/584170,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值