c# - 使用 C# 将大 Excel 表存储到数组中
问题描述
我有一个大约 50 列和超过 6000 行的 Excel 表。
我找到了以下读取数据的解决方案: https ://coderwall.com/p/app3ya/read-excel-file-in-c
它使用 Microsoft.Office.Interop.Excel 来读取文件。
可悲的是,它真的很慢。读取一个只有 50 行的文件大约需要一分钟。我从来没有完成加载 6000 行文件。
然后我考虑使用 csv,但表格包含 , 和 ; 所以这不是一个选择。
谁能建议另一种方法?
解决方案
除了我的评论——
这是我用来从 Excel 文件中读取并写入表格的方法。您将需要:
using Microsoft.Office.Interop;
using 语句,以及Microsoft.Office.Interop.Excel
对您的项目添加正确的引用。
方法:
public DataTable ReadExcel(string fileName, string TableName)
{
DataTable dt = new DataTable();
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0\"");
OleDbCommand cmd = new OleDbCommand("SELECT * FROM " + TableName, conn);
try
{
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (!reader.IsClosed)
{
dt.Load(reader);
}
}
finally
{
conn.Close();
}
return dt;
}
解释:
fileName
将是您要读取数据表单的 Excel 文件的文件路径。
TableName
将是您要从中读取数据的 Excel 工作表名称。
之所以这样写,是因为 C# 会读取它并将 Excel 文件视为数据库,而sheets
不是tables
.
您可能需要更改OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0\"");
您可以在这里找到正确/正确Provider
的:https ://www.connectionstrings.com/excel/
推荐阅读
- python - pandas - 根据列值复制每一行'n'次
- c++ - 在C++中继承时,受保护的方法可以成为私有方法吗?
- android - 数据的 getContentResolver() 值为 null 但正确接收名称
- python - 构建python代码以通过subprocess.Popen运行消息
- dialogflow-es - 如何处理同音异义词
- c - realloc():两次计算后下一个大小无效
- azure-devops-rest-api - 创建发布 JSON 正文在 Postman 中有效,但在 PowerShell 脚本中无效
- python - 我怎样才能只得到姓名和联系电话?
- c# - 用空格替换所有不支持的字符
- java - 如何使用 Mockito 模拟超类中的字段?