在数据处理和报表工作流程中,将 Excel 文件和 CSV 文件互相转换是非常常见的需求。CSV 文件轻量、易解析,非常适合与数据库、数据分析工具或 Web 服务集成,而 Excel 则提供丰富的格式、公式和数据验证功能。在许多企业应用中,你可能需要在这两者之间灵活转换,以便兼顾数据处理效率和可读性。
使用 C#,你可以高效地完成这些转换,同时确保数据完整性、格式准确,并保持自动化处理的灵活性。本文将从基础操作讲起,逐步介绍自定义设置、批量处理及高级实践技巧,帮助你在实际工作中轻松应对各种转换需求。
在编写代码之前,你需要安装一个支持 Excel 文件操作的库。本文使用 Free Spire.XLS for .NET,它是免费的 Excel 库,支持现代 Excel 功能,并提供将 Excel 转 CSV 以及 CSV 转 Excel 的内置方法。
在 Visual Studio 项目中运行以下命令:
Install-Package FreeSpire.XLS安装完成后,可以创建一个简单的控制台程序来验证:
using Spire.Xls;
class Program
{
static void Main()
{
Workbook workbook = new Workbook();
System.Console.WriteLine("已成功安装。");
}
}如果程序运行无报错,说明库已经可以使用,可以开始文件转换操作。
将 Excel 工作表导出为 CSV 是最常见的操作,尤其在以下场景中:
下面示例展示了如何将 Excel 文件的第一个工作表转换为 UTF-8 编码的 CSV 文件:
using Spire.Xls;
using System.Text;
namespace ConvertExcelToCsv
{
class Program
{
static void Main(string[] args)
{
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
Worksheet sheet = workbook.Worksheets[0];
sheet.SaveToFile("ExcelToCSV.csv", ",", Encoding.UTF8);
workbook.Close();
}
}
}这种方法可以保留文本、数字以及基本格式,生成的 CSV 文件可被 Excel、数据库或任何支持 CSV 的工具打开。
有时候,你可能希望对 Excel 数据导出的方式进行更多控制:
Spire.XLS 允许你明确指定分隔符和编码,从而避免不同地区设置或非标准字符导致的问题。
将 CSV 导入 Excel 同样简单。你可以在导入时自动调整格式、自动适应列宽行高,并处理数字与文本冲突。
using Spire.Xls;
namespace ConvertCsvToExcel
{
class Program
{
static void Main(string[] args)
{
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"ExcelToCSV.csv", ",", 1, 1);
Worksheet sheet = workbook.Worksheets[0];
CellRange usedRange = sheet.AllocatedRange;
usedRange.IgnoreErrorOptions = IgnoreErrorType.NumberAsText;
usedRange.AutoFitColumns();
usedRange.AutoFitRows();
workbook.SaveToFile("CSVToExcel.xlsx", ExcelVersion.Version2013);
workbook.Close();
}
}
}这种方法不仅保证数据完整导入,同时也让内容在 Excel 中易于阅读和进一步处理。
在实际应用中,你可能需要自动处理多个文件。例如,将一个文件夹内所有 Excel 文件批量转换为 CSV:
using Spire.Xls;
using System.IO;
using System.Text;
class BatchConvert
{
static void Main()
{
string inputFolder = @"C:\InputExcels\";
string outputFolder = @"C:\OutputCSVs\";
foreach (string filePath in Directory.GetFiles(inputFolder, "*.xlsx"))
{
Workbook workbook = new Workbook();
workbook.LoadFromFile(filePath);
Worksheet sheet = workbook.Worksheets[0];
string fileName = Path.GetFileNameWithoutExtension(filePath);
sheet.SaveToFile(Path.Combine(outputFolder, fileName + ".csv"), ",", Encoding.UTF8);
workbook.Close();
}
System.Console.WriteLine("批量转换完成。");
}
}这种方法非常适合:
在批量处理时,注意保持文件路径、命名规范和内存管理,避免处理大文件夹时出现性能问题。
虽然 Excel 与 CSV 的转换操作看起来简单,但一些细节会影响最终结果:
IgnoreErrorOptions 可以避免数字与文本混淆,特别是公式或 ID 数据。Close() 释放内存,尤其在循环或批量处理场景下,否则可能导致内存占用增加。AutoFitColumns() 和 AutoFitRows() 调整列宽和行高。在 C# 中操作 Excel 和 CSV 文件,其实比想象的简单。无论是单个文件转换,还是处理整个文件夹的数据,掌握基础方法和一些自定义设置,就能让数据处理更加高效。
结合基础转换、自定义选项和批量处理,你可以轻松完成:
这些方法可以帮助你减少重复操作,提高准确性,同时让数据处理过程更清晰可控。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。