天天看點

第100篇博文紀念 | C# 根據資料庫表結構生成DOC資料庫文檔(4)

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 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;

  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{2}</span></p>

  <td width=71 valign=top style='width:53.55pt;border-top:none;border-left:

  <p class=MsoNormal align=center style='text-align:center'>{3}</p>

  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{4}</span></p>

  <td width=95 valign=top style='width:71.3pt;border-top:none;border-left:none;

  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{5}</span></p>

  <td width=92 valign=top style='width:69.05pt;border-top:none;border-left:

  <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>{6}</span></p>

 </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>

    /// 輸出其他

    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 " ";

    private string OutputValue(string obj)

        if (string.IsNullOrEmpty(obj))

            return obj;

}    代碼說明:

這裡是嵌套輸出的表格,注意處理為空的情況,否則表格可能不完整,大家可以根據實際情況進行修改。

大家直接把頁面上的表格全選然後複制到Word裡面即可,這裡注意了,我試過直接另存為word,但是版式不對,但是直接複制到Word裡面是可以的。

本文轉自over140 51CTO部落格,原文連結:http://blog.51cto.com/over140/584170,如需轉載請自行聯系原作者