在不使用第三方DLL/oledb/interop/sdk的情况下读取C#中的excel文件
我想用C#读取excel文件。我不想在阅读时使用以下内容:在不使用第三方DLL/oledb/interop/sdk的情况下读取C#中的excel文件,c#,excel,visual-studio-2005,C#,Excel,Visual Studio 2005,我想用C#读取excel文件。我不想在阅读时使用以下内容: 第三方dll(我的客户端不允许我使用第三方dll) SDK(与上述原因相同,因为我不允许下载) 不允许在目标服务器中使用interop/oledb,因为未安装office OpenXml 注:我使用VS2005 请给我提些别的建议>> 提前感谢,, Sanjay正如我在评论中所说,使用OleDb与Interop不是一回事。 OleDb是NetFramework的一部分,如果您的客户使用您的应用程序,它已经安装并运行了该框架。因此,此示例
Sanjay正如我在评论中所说,使用OleDb与Interop不是一回事。
OleDb是NetFramework的一部分,如果您的客户使用您的应用程序,它已经安装并运行了该框架。因此,此示例有助于演示这样一个事实,即OleDb可以在不安装Office的情况下读取目标excel文件 在这个例子中,我有一个简单的工作表,有三列(第一行有标题) 第一列和第二列是简单的文本列,而第三列包含数值
try
{
string con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;Extended Properties='Excel 8.0;HDR=Yes;'";
using(OleDbConnection connectin = new System.Data.OleDb.OleDbConnection(con));
{
connectin.Open();
OleDbCommand command = new System.Data.OleDb.OleDbCommand("select * from [Sheet1$]", connectin);
using(System.Data.OleDb.OleDbDataReader dr = command.ExecuteReader())
{
while (dr.Read)
{
if(dr.HasRows)
{
Console.Write(dr[0].ToString() + " ");
Console.Write(dr[1].ToString() + " ");
Console.WriteLine(Convert.ToInt32(dr[2]));
}
}
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
您尝试了什么?将文件另存为CSV文件并使用它进行解析。我从未理解对第三方库的恐惧。这几乎就像有些人认为的那样,除非你直接去发布的规范,并为你的确切任务解释其内容,否则你一定是在欺骗和削弱他们的黑客网络。如果你提醒你的客户,微软花了数百万美元聘请律师来阻止人们直接操纵办公格式,那么他们可能会改变主意。至少你可以使用interopt库。为什么你要把OleDb和Interop放在一起?它们不是一回事。您可以使用OleDb(NET.Framework的一部分)读取Excel文件,而不需要安装Office。相反,互操作要求目标上有Officemachine@James在我看来,你从来没有使用过MS的规格。。。plase告诉我,任何人在不到一个小时的时间内,完全根据二进制XLS格式(不是XLSX)的规范编写Excel导入…嗨,即使我部署代码的IIS机器没有安装Office,这也可以工作吗。?如果是的话,这实际上回答了我的问题。我已经在本地实现了这一点,并且工作正常。XLS的唯一要求是NET框架。但是,此处必须发出警告。64位操作系统和TargetPlatform=AnyCPU的情况要复杂一些。但这是另一个问题