我的应用程序需要从Excel文件中读取数据。我使用.Net和c#进行开发。 由于无法在系统中安装MS Office,因此我的应用程序无法读取Excel文件,并在加载Excel的dll时抛出错误。
如何在未安装MS Office的系统中访问Excel文件?
我的应用程序需要从Excel文件中读取数据。我使用.Net和c#进行开发。 由于无法在系统中安装MS Office,因此我的应用程序无法读取Excel文件,并在加载Excel的dll时抛出错误。
如何在未安装MS Office的系统中访问Excel文件?
有一个选项是使用 OleDB
并将 Excel 表格像数据库中的数据表一样使用...
这只是一个例子.....
string con =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;" +
@"Extended Properties='Excel 8.0;HDR=Yes;'";
using(OleDbConnection connection = new OleDbConnection(con))
{
connection.Open();
OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
using(OleDbDataReader dr = command.ExecuteReader())
{
while(dr.Read())
{
var row1Col0 = dr[0];
Console.WriteLine(row1Col0);
}
}
}
这个示例使用Microsoft.Jet.OleDb.4.0
提供程序来打开和读取Excel文件。但是,如果文件是xlsx类型(来自Excel 2007及更高版本),则需要下载Microsoft Access Database Engine组件并在目标计算机上安装它。
该提供程序称为Microsoft.ACE.OLEDB.12.0
;请注意,此组件有两个版本,一个用于32位,一个用于64位。根据应用程序的位数和已安装的Office版本(如果有)选择适当的版本。要使驱动程序正确工作,有很多注意事项。例如,请参阅此问题。
当然,在目标计算机上不需要安装Office。
虽然这种方法有一些优点,但我认为你应该特别注意你问题中注释所指示的链接Reading excel files from C#。存在一些关于数据类型正确解释的问题,以及当单个Excel单元格中的数据长度超过255个字符时的处理方式。
CSharpJExcel可用于读取Excel 97-2003文件(XLS),ExcelPackage可用于读取Excel 2007/2010文件(Office Open XML格式,XLSX),而ExcelDataReader似乎可以处理这两种格式
祝好运!
using System.Data;
using System.Data.OleDb;
namespace Data_Migration_Process_Creator
{
class Class1
{
private DataTable GetDataTable(string sql, string connectionString)
{
DataTable dt = null;
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
using (OleDbDataReader rdr = cmd.ExecuteReader())
{
dt.Load(rdr);
return dt;
}
}
}
}
private void GetExcel()
{
string fullPathToExcel = "<Path to Excel file>"; //ie C:\Temp\YourExcel.xls
string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=yes'", fullPathToExcel);
DataTable dt = GetDataTable("SELECT * from [SheetName$]", connString);
foreach (DataRow dr in dt.Rows)
{
//Do what you need to do with your data here
}
}
}
}
将Excel文件保存为CSV格式,使用CSV读取库(如FileHelpers)在C#中读取生成的文件。
.csv
文件(逗号分隔值文件),现在您可以轻松地阅读它。