前提
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;
}
}
模板
结果