星空外围权威网站

Spire.XLS系列教程:如何使用 C# 通过流创建、加载、修改和保存 Excel 文件

翻译|使用教程|编辑:吉炜炜|2024-12-30 17:11:27.730|阅读 30 次

概述:本文通过 Spire.XLS for .NET 演示如何使用 C# 通过流创建、加载、修改和保存 Excel 文件,为数据管理提供灵活且可扩展的解决方案。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

通过 C# 中的流进行操作,开发者可以动态地创建、加载、修改和保存 Excel 文件,从而实现灵活高效的数据处理。这种方法可以在很大程度上减少直接的磁盘 I/O 操作,不仅提升了应用程序性能,还增强了响应能力。尤其适用于实时数据操作或存储受限的场景,可以简化数据交换和系统集成。本文通过 Spire.XLS for .NET 演示如何使用 C# 通过流创建、加载、修改和保存 Excel 文件,为数据管理提供灵活且可扩展的解决方案。

Spire.XLS for .NET最新版下载  

安装 Spire.XLS for .NET

首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从下载,也可以通过  安装。

PM> Install-Package Spire.XLS

用 C# 动态创建 Excel 文件并保存到流

利用 Spire.XLS for .NET,开发者可以通过初始化 Workbook 对象动态创建 Excel 文件,然后填充数据并设置格式,最后使用 Workbook.SaveToStream() 方法将其保存到流。这种方法可以省去直接对磁盘进行文件存储的需求,同时提升了应用的性能和响应速度。

以下是通过 C# 创建 Excel 文件并保存到流的步骤:

  • 创建 Workbook 类的实例以生成一个新的 Excel 工作簿,新建的工作簿默认包含三个工作表。
  • 使用 Workbook.Worksheets[] 属性访问特定的工作表。
  • 定义要写入工作表的数据,例如使用 DataTable 组织数据。
  • 通过 Worksheet.InsertDataTable() 方法直接将数据表插入工作表中,或者使用 Worksheet.Range[].Value 属性单独设置单元格的值。
  • 对工作表单元格进行格式化,例如设置颜色、字体、边框,或调整列宽。
  • 使用 Workbook.SaveToStream() 方法将工作簿保存到内存流中。保存后的流可用于进一步处理,例如保存为文件或通过网络进行传输。
using Spire.Xls;
using System.Data;
using System.Drawing;

namespace CreateExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的工作簿实例
            Workbook workbook = new Workbook();

            // 获取工作簿中的第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 创建并填充一个包含示例数据的 DataTable
            DataTable dataTable = new DataTable("Data");
            dataTable.Columns.Add("编号", typeof(int));
            dataTable.Columns.Add("姓名", typeof(string));
            dataTable.Columns.Add("年龄", typeof(int));
            dataTable.Columns.Add("国家", typeof(string));
            dataTable.Columns.Add("工资 (¥)", typeof(decimal));
            dataTable.Rows.Add(1, "张伟", 29, "中国", 8000m);
            dataTable.Rows.Add(2, "李娜", 35, "中国", 12000m);
            dataTable.Rows.Add(3, "王强", 42, "中国", 15000m);
            dataTable.Rows.Add(4, "杰克", 26, "美国", 9500m);
            dataTable.Rows.Add(5, "陈思", 31, "中国", 11000m);
            dataTable.Rows.Add(6, "石原安子", 28, "日本", 8800m);

            // 将 DataTable 中的数据插入到工作表中
            sheet.InsertDataTable(dataTable, true, 1, 1);

            // 格式化工作表
            // 设置表头行的样式
            sheet.Rows[0].Style.Color = Color.LightSkyBlue;
            sheet.Rows[0].Style.Font.FontName = "微软雅黑";
            sheet.Rows[0].Style.Font.Size = 12f;
            sheet.Rows[0].BorderAround(); // 给表头行添加外边框
            sheet.Rows[0].Borders.Color = Color.LightSteelBlue; // 设置边框颜色

            // 设置数据行的样式
            for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                sheet.Rows[i].Style.Color = Color.LightGray;
                sheet.Rows[i].Style.Font.FontName = "微软雅黑";
                sheet.Rows[i].Style.Font.Size = 11f;
            }
            sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].BorderInside(); // 添加数据行单元格内边框
            sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].Borders.Color = Color.LightSteelBlue; // 设置边框颜色

            // 调整列宽以适应内容
            for (int j = 1; j <= sheet.AllocatedRange.Columns.Count(); j++)
            {
                sheet.AutoFitColumn(j);
            }

            // 将工作簿保存到内存流
            MemoryStream stream = new MemoryStream();
            workbook.SaveToStream(stream, FileFormat.Version2016);

            // 将流内容写入到文件
            File.WriteAllBytes("output/通过流创建Excel文件.xlsx", stream.ToArray());

            // 释放资源
            workbook.Dispose();
        }
    }
}

使用 C# 创建 Excel 文件并保存到流

用 C# 从流加载并读取 Excel 文件

通过 Spire.XLS for .NET,开发者可以利用 Workbook.LoadFromStream() 方法直接从流加载 Excel 文件。加载完成后,可以轻松读取到流中 Excel 文件的单元格数据,实现快速灵活的数据处理,而无需文件 I/O 操作。

以下是通过 C# 从流加载并读取 Excel 文件的步骤:

  • 创建一个 Workbook 实例。
  • 创建一个 MemoryStream 或 FileStream 对象。
  • 使用 Workbook.LoadFromStream() 方法将 Excel 文件从流中加载到工作簿中。
  • 使用 Workbook.Worksheets[] 属性获取第一个工作表。
  • 遍历工作表的行和列,通过 Worksheet.AllocatedRange[].Value 属性提取单元格数据。
  • 打印提取的数据,或将数据用于其他操作。
using Spire.Xls;

namespace LoadExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 Workbook 类的实例
            Workbook workbook = new Workbook();

            // 创建一个内存流
            MemoryStream stream = new MemoryStream();
            File.OpenRead("Sample.xlsx").CopyTo(stream);

            // 从内存流加载 Excel 文件
            workbook.LoadFromStream(stream);

            // 获取工作簿中的第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 初始化一个列表,用于存储从工作表中提取的数据
            List<List<string>> data = new List<List<string>>();
            for (int i = 0; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                // 创建一个列表来存储每行数据
                List<string> lines = new List<string>();
                for (int j = 0; j < sheet.AllocatedRange.Columns.Count(); j++)
                {
                    // 获取单元格的值并添加到当前行的列表中
                    lines.Add(sheet.AllocatedRange[i + 1, j + 1].Value);
                }
                // 将当前行的数据添加到数据列表中
                data.Add(lines);
            }

            // 打印提取的数据,或将其用于后续操作
            foreach (List<string> lines in data)
            {
                Console.WriteLine(string.Join(" | ", lines));
            }
        }
    }
}


使用 Spire.XLS 从流中加载 Excel 文件并读取数据

用 C# 在流中修改并保存 Excel 文件

借助 Spire.XLS for .NET,开发者可以在内存中修改 Excel 文件。首先通过 LoadFromStream() 方法将流中的 Excel 文件加载到 Workbook 对象中。完成修改(例如更改单元格值或格式)后,可以使用 Workbook.SaveToStream() 方法将文件保存回流。无需依赖直接的文件存储操作即可实现实时的 Excel 文件数据更改。

以下是通过 C# 修改流中 Excel 文件的步骤:

  • 创建代表 Excel 文件的 Workbook 实例。
  • 创建 MemoryStream 或 FileStream 实例。
  • 使用 Workbook.LoadFromStream() 方法从流加载 Excel 文件。
  • 通过 Workbook.Worksheets[] 属性访问工作表。
  • 修改表头行及数据行的样式(字体、大小、背景色等),通过 CellRange.Style 属性完成。
  • 使用 Worksheet.AutoFitColumn() 方法自动调整列宽以适应内容。
  • 使用 Workbook.SaveToStream() 方法将更改保存到流。
using Spire.Xls;
using System.Drawing;

namespace ModifyExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 Workbook 类的一个新实例
            Workbook workbook = new Workbook();

            // 创建一个内存流
            MemoryStream stream = new MemoryStream();
            File.OpenRead("Sample.xlsx").CopyTo(stream);

            // 从内存流加载 Excel 文件
            workbook.LoadFromStream(stream);

            // 获取工作簿中的第一个工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 修改表头行的样式
            CellRange headerRow = sheet.AllocatedRange.Rows[0];
            headerRow.Style.Font.FontName = "宋体";
            headerRow.Style.Font.Size = 12f;
            headerRow.Style.Color = Color.LightBlue;

            // 修改数据行的样式
            for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                CellRange dataRow = sheet.AllocatedRange.Rows[i];
                dataRow.Style.Font.FontName = "宋体";
                dataRow.Style.Font.Size = 10f;
                dataRow.Style.Color = Color.LightGray;

                // 交替着色(偶数行)
                if (i % 2 == 0)
                {
                    dataRow.Style.Color = Color.LightSlateGray;
                }
            }

            // 自动调整列宽以适应内容
            for (int k = 1; k <= sheet.AllocatedRange.Columns.Count(); k++)
            {
                sheet.AutoFitColumn(k);
            }

            // 修改边框颜色
            sheet.AllocatedRange.Style.Borders.Color = Color.White;

            // 将修改后的工作簿保存回内存流
            workbook.SaveToStream(stream);

            // 将流内容写入到一个新文件
            File.WriteAllBytes("output/通过流修改Excel文件.xlsx", stream.ToArray());

            // 释放资源
            workbook.Dispose();
        }
    }
}

使用 .NET 在流中修改 Excel 文件

欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询  ;技术交流Q群(767755948)

慧都年终大促火热开启


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@atlvshi.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP