C#用Spire.Xls对Excel的页面进行自动列宽处理

Spire.xls是目前C#处理Excel的比较好的控件之一,功能强大而且支持Excel97-2003及Excel2007及以上各版本,并且不与Excel版本变化及是否已安装Excel等Office相关,也就是说你的机器上没有安装Excel也能处理你需要的Excel版本的文件。完全版本的Spire.Xls是收费软件,当然你也可以到其官方网站下载试用版,试用版来进行轻量级使用是没有问题的。Spire相关知识请到其官网云了解。

在用Spire.Xls处理Excel文件时,对于列宽的设置,其自动列宽(AutoFitColumns)处理效果不理想:

sheet.AllocatedRange.AutoFitColumns();

一般地,我们处理的Excel生成与导出等操作所涉及的大多是列宽基本上都可作列宽自适应来输出,为了方便处理,编写了以下代码,您可以根据您的需要参考,其中的页面总字符宽需要根据您的页面(包括边距等参数)设置的具体情况自我测试后确定。代码的后段部分,对列宽可能会进行二次重设分配,以便使页面显得比较充实,您如果不需要,可以除去,不会影响各列的自动列宽匹配处理。

        /// <summary>
        /// Excel的页面自动列宽处理
        /// </summary>
        /// <param na
Free Spire.XLS for .NET 是e-iceblue公司开发的一款支持对所有Excel格式类型文件进行操作的.NET 控件。它适用于任何类型的应用程序比如ASP.NET Web应用程序或者Windows桌面应用程序。Spire.XLS for .NET允许开发人员创建和管理Excel,而不需要安装Microsoft Excel或者Microsoft Office。相比Microsoft,Spire.XLS for .NET对于开发人员来说是一个更好的选择 - 自动化,安全,稳定,可扩展性延伸,速度快,价格便宜和功能强大。 通过使用Free Spire.XLS for .NET,开发人员可以快速方便的查看,生成,读写以及自定义编辑Excel文件。Spire.XLS for .NET支持Excel 97-2003, Excel 2007, Excel 2010 and Excel 2013。它还支持C#, VB.NET, ASP.NET和 ASP.NET MVC编程语言 作为一款专业,强大,方便易用的控件,Spire.XLS for .NET有一下主要功能: 新建Excel文件,编辑已有的Excel文件,多种保存Excel方式,设置Excel文件属性,文件打印设置,合并,拆分或者拷贝单元格,支持对Excel文件加锁或者加密保护。 Spire.XLS for .NET支持把数据从数据库导出到Excel工作表,或者把数据从Excel数据导入到数据库。 Spire.XLS for .NET 提供强大的功能为开发者设置单元格格式。这次格式化数字,文字缩进,定位调整,设置单元格边线,单元格填充以及保护等。 开发人员可以轻松的利用Spire.XLS for .NET向Excel文件里面写入内容,包括超过530多种的公式,70多种表格,支持插入图片,不同类型的文字,链接,注释甚至VBA等。 Spire.XLS for .NET 还允许开发人员将Excel文件转换成PDF, HTML, CSV, Text, XML以及图片格式。 注:下载包含有Spire.xls.dll文件以及部分Demo, 你可以调用DLL并参照Demo提供的代码处理Excel文档。
using System.Data;using System.Data.SQLite;using Spire.Xls;namespace SQLiteToExcel{ class Program { static void Main(string[] args) { // SQLite数据库路径 string sqliteFilePath = "Sample.db"; // Excel文件路径 string excelFilePath = "output/DatabaseToExcel.xlsx"; // 创建一个新的工作簿实例 Workbook workbook = new Workbook(); // 清除默认的工作表 workbook.Worksheets.Clear(); // 创建SQLite连接 using (SQLiteConnection connection = new SQLiteConnection($"Data Source={sqliteFilePath};Version=3;")) { connection.Open(); // 获取所有表名 DataTable tables = connection.GetSchema("Tables"); // 遍历每个表 foreach (DataRow tableRow in tables.Rows) { string tableName = tableRow["TABLE_NAME"].ToString(); // 创建一个新的工作表 Worksheet sheet = workbook.Worksheets.Add(tableName); // 获取表数据 string selectQuery = $"SELECT * FROM [{tableName}]"; using (SQLiteCommand command = new SQLiteCommand(selectQuery, connection)) { using (SQLiteDataReader reader = command.ExecuteReader()) { // 获取名并写入第一行 for (int col = 0; col < reader.FieldCount; col++) { sheet.Range[1, col + 1].Value = reader.GetName(col); } // 设置标题行的字体样式 sheet.Rows[0].Style.Font.IsBold = true; sheet.Rows[0].Style.Font.Size = 12; // 写入数据行 int rowIndex = 2; while (reader.Read()) { for (int col = 0; col < reader.FieldCount; col++) { sheet.Range[rowIndex, col + 1].Value = reader.GetValue(col).ToString(); // 自动调整 sheet.AutoFitColumn(col + 1); } // 设置数据行的字体样式 sheet.Rows[rowIndex - 1].Style.Font.Size = 11; rowIndex++; } } } } connection.Close(); } // 保存Excel文件 workbook.SaveToFile(excelFilePath); workbook.Dispose(); Console.WriteLine("数据已成功导出到Excel文件!"); } }}
03-14
### 使用 C# 导出 SQLite 数据库中的数据至 Excel 文件 为了完成此操作,可以采用 `System.Data.SQLite` 库来访问 SQLite 数据库,并使用第三方库如 Spire.Xls处理 Excel 文件的创建与写入。 #### 安装必要的 NuGet 包 首先,在项目中安装两个主要的 NuGet 包: - **System.Data.SQLite** - **Spire.XLS** 可以通过 Visual Studio 的包管理器控制台执行如下命令进行安装: ```shell Install-Package System.Data.SQLite Install-Package Spire.Xls.Standard.Premiumedition ``` #### 编码实现导出功能 下面是一段完整的代码示例,展示了如何从 SQLite 中查询数据并将其保存到一个新的 Excel 工作表里[^1]。 ```csharp using System; using System.Data; using System.Data.SQLite; using Spire.Xls; public class ExportToExcel { public static void Main(string[] args){ // 设置 SQLite 连接字符串 string connectionString = "Data Source=your_database_file.db"; // 执行 SQL 查询语句 using(SQLiteConnection connection = new SQLiteConnection(connectionString)){ try{ DataSet ds = new DataSet(); // 建立连接 connection.Open(); // 创建适配器对象并将结果填充到数据集中 SQLiteDataAdapter adapter = new SQLiteDataAdapter("SELECT * FROM your_table_name", connection); adapter.Fill(ds); // 初始化工作簿对象 Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; // 添加名作为首行标题 for(int i = 0; i < ds.Tables[0].Columns.Count; ++i){ sheet.Cells[0,i].Value = ds.Tables[0].Columns[i].ColumnName; } // 遍历 DataTable 行记录填充实数据部分 int rowIndex = 1; foreach(DataRow row in ds.Tables[0].Rows){ for (int colIndex = 0; colIndex < ds.Tables[0].Columns.Count; ++colIndex){ sheet.Cells[rowIndex,colIndex].Value = row[colIndex]; } rowIndex++; } // 输出 Excel 文件 workbook.SaveToFile(@"path_to_save\exported_data.xlsx", FileFormat.Version2013); Console.WriteLine("Export completed successfully."); }catch(Exception ex){ Console.WriteLine($"An error occurred while exporting data: {ex.Message}"); }finally{ if(connection.State != ConnectionState.Closed) connection.Close(); } } } } ``` 这段代码实现了打开 SQLite 数据库连接、执行 SELECT 查询获取所需的数据集、构建 Excel 文档结构以及最终将文档保存为 .xlsx 文件的功能。注意替换其中的占位符(如数据库文件路径、表格名称等),以便适应具体的应用场景需求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值