sqlsugar查看表结构并导出word文档

前提

SqlSugar 5.1.4

MiniWord 0.9.2

使用

cs 复制代码
using MiniSoftware;
using SqlSugar;

namespace ConsoleApp5
{
    internal class Program
    {
        /// <summary>
        /// 导出数据库表结构和字段信息
        /// https://www.donet5.com/Home/Doc?typeId=1203
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            var connectionString = "Server=127.0.0.1;uid=sa;pwd=12345678;Database=数据库名;MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;";
            var db = new SqlSugarClient(new ConnectionConfig()
            {
                DbType = DbType.SqlServer,
                ConnectionString = connectionString,
                IsAutoCloseConnection = true
            });

            // 获取所有表名及备注
            var tables = db.DbMaintenance.GetTableInfoList(false);
            Console.WriteLine($"总共有{tables.Count}张表");
            var totalData = new Dictionary<string, object>();
            var tableDataList = new List<TableModel>();
            int index = 0;
            foreach (var table in tables)
            {
                //Console.WriteLine($"表名:{table.Name},备注:{table.Description}");
                var tableData = new TableModel()
                {
                    Name = table.Name,
                    Description = table.Description
                };
                var columns = db.DbMaintenance.GetColumnInfosByTableName(table.Name, false);
                index = 0;
                foreach (var column in columns)
                {
                    index += 1;
                    var tableColumnData = new ColumnModel()
                    {
                        Idx = index,
                        CName = column.DbColumnName,
                        CDesc = column.ColumnDescription,
                        CType = column.DataType
                    };
                    tableData.Columns.Add(tableColumnData);
                    //Console.WriteLine($"\t字段名:{column.DbColumnName},类型:{column.DataType},备注:{column.ColumnDescription}");
                }
                tableDataList.Add(tableData);
            }
            totalData.Add("tables", tableDataList);
            Console.WriteLine("数据查询完毕");
            var basePath = AppDomain.CurrentDomain.BaseDirectory;
            var resultName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".docx";
            var outputPath = Path.Combine(basePath, resultName);
            var intputPath = Path.Combine(basePath, "009.docx");
            MiniWord.SaveAsByTemplate(outputPath, intputPath, totalData);
            Console.WriteLine("完成");
            Console.ReadKey();
        }
    }

    public class TableModel
    {
        /// <summary>
        /// 表名称
        /// </summary>
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// 表描述
        /// </summary>
        public string Description { get; set; } = string.Empty;

        /// <summary>
        /// 表中的列字段
        /// </summary>
        public List<ColumnModel> Columns { get; set; } = new List<ColumnModel>();
    }

    public class ColumnModel
    {
        /// <summary>
        /// 索引
        /// </summary>
        public int Idx { get; set; } = 0;

        /// <summary>
        /// 列名称
        /// </summary>
        public string CName { get; set; } = string.Empty;

        /// <summary>
        /// 列名称
        /// </summary>
        public string CDesc { get; set; } = string.Empty;

        /// <summary>
        /// 列类型
        /// </summary>
        public string CType { get; set; } = string.Empty;
    }
}

模板

结果

相关推荐
小咖自动剪辑1 天前
Base64与图片互转工具增强版:一键编码/解码,支持多格式
人工智能·pdf·word·媒体
骆驼爱记录1 天前
Excel邮件合并嵌入图片技巧
自动化·word·excel·wps·新人首发
GiantGo2 天前
一键导出PPT备注到Word
word·powerpoint·导出备注
初九之潜龙勿用2 天前
C# 操作Word模拟解析HTML标记之背景色
开发语言·c#·word·.net·office
大三开学菜鸟2 天前
Word 字符数精确统计工具
word
骆驼爱记录2 天前
Word题注编号间距调整4种方法
自动化·word·excel·wps·新人首发
AAA_搬砖达人小郝2 天前
Markdown 一键生成完美 Word(.docx) + PDF 的完整实战方案(JDK 8 环境亲测可用)
pdf·word
DS随心转插件3 天前
Gemini怎么生成word
人工智能·word·ds随心转
缺点内向3 天前
在 C# 中为 Word 段落添加制表位:使用 Spire.Doc for .NET 实现高效排版
开发语言·c#·自动化·word·.net
星月前端3 天前
springboot中使用LibreOffice实现word转pdf(还原程度很高,可以配置线程并发!)
spring boot·pdf·word