将 .xlsx & .xls 转换为 .csv






4.04/5 (12投票s)
使用 C#.NET 进行简单的文件转换
引言
本文档介绍了如何使用 ExcelDataReader
库进行简单的文件转换,特别是 Excel 到 csv 的转换。轻松将您的 Excel 97-2003 (.xls) 或 2007 (.xlsx) 文件转换为简单的逗号分隔值文件 (.csv)。
CSV 文件更容易在程序中操作。
需求
作为一名初学者,我在程序中直接操作 Excel 文件时遇到了一些困难。因此我考虑这样做。
我遇到的一些问题包括无法获取适当的单元格、难以按行访问等。
由于 CSV 是一个简单的流文件,因此更容易处理文件数据。CSV 数据也可以被视为一个 Excel 表格。
工作
该项目基于 ExcelDataReader
库。
该项目的主要目标是 将 Excel 数据读取到程序中 并将其转换为易于操作的格式,即 CSV。
关于项目的运作
IExcelDataReader excelReader
此对象允许我们操作 Excel 文件。
然后我们将整个 Excel 数据读取到 Dataset
中,该 Dataset
将被用于生成 CSV 文件。
DataSet result = excelReader.AsDataSet();
我在这里使用 Dataset
是因为从 dataset
的内容中获取值并写入以逗号分隔的矩阵形式的 CSV 文件非常容易。
用户友好的界面
- 浏览要转换的输入 Excel 文件。
- 浏览输出文件夹和文件名。
- 点击“转换”按钮。
转换后的 CSV 文件将位于指定的输出文件夹中。
Using the Code
使用了 ExcelDataReader
库。预览中仅显示原型。在附带的源代码文件中获取完整代码。如果您在其他项目中使用此代码,请将 ExcelDataReader
库引用添加到您的项目中(引用已附带)。
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
// Reading from a binary Excel file ('97-2003 format; *.xls)
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
// Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
// DataSet - The result of each spreadsheet will be created in the result.Tables
DataSet result = excelReader.AsDataSet();
// Free resources (IExcelDataReader is IDisposable)
excelReader.Close();
Excel 文件中的工作表成为 Dataset
中的表
result.Tables[0].TableName.ToString(); // to get first sheet name (table name)
使用上述代码,可以生成 CSV 文件。
string csvData = "";
int row_no = 0;
while (row_no < result.Tables[ind].Rows.Count) // ind is the index of table
// (sheet name) which you want to convert to csv
{
for (int i = 0; i < result.Tables[ind].Columns.Count; i++)
{
csvData += result.Tables[ind].Rows[row_no][i].ToString() + ",";
}
row_no++;
csvData += "\n";
}
生成 CSV 数据后,将其写入文件。
string output = filepath + filename + ".csv"; // define your own filepath & filename
StreamWriter csv = new StreamWriter(@output, false);
csv.Write(csvData);
csv.Close();
我感谢 ExcelDataReader
库的作者,它在完成我的项目方面提供了很大的帮助。
以下是 ExcelDataReader
的参考资料