Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不使用第三方DLL/oledb/interop/sdk的情况下读取C#中的excel文件_C#_Excel_Visual Studio 2005 - Fatal编程技术网

在不使用第三方DLL/oledb/interop/sdk的情况下读取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的一部分,如果您的客户使用您的应用程序,它已经安装并运行了该框架。因此,此示例

我想用C#读取excel文件。我不想在阅读时使用以下内容:

  • 第三方dll(我的客户端不允许我使用第三方dll)
  • SDK(与上述原因相同,因为我不允许下载)
  • 不允许在目标服务器中使用interop/oledb,因为未安装office
  • OpenXml
  • 注:我使用VS2005

    请给我提些别的建议>>

    提前感谢,,
    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的情况要复杂一些。但这是另一个问题