Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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
Asp.Net(c#)-阅读Excel表格_C#_Asp.net_Excel - Fatal编程技术网

Asp.Net(c#)-阅读Excel表格

Asp.Net(c#)-阅读Excel表格,c#,asp.net,excel,C#,Asp.net,Excel,我需要从Excel电子表格中导入一些内容,并且一直在网上查看各种示例,它们似乎都使用与64位不兼容的“Jet”驱动程序 现在我完全了解了可用的解决方法(在更改IIS运行方式等方面),但是我想知道是否有“Jet”驱动程序的替代品,这样我就可以从64位服务器上运行的Asp.Net中读取和生成excel工作表,而无需对IIS进行任何修改。上次我研究时,没有x64驱动程序。我用它来打开xls文件。只要您使用x86编译,它就可以在64位框上工作 DataSet myDataset = new DataS

我需要从Excel电子表格中导入一些内容,并且一直在网上查看各种示例,它们似乎都使用与64位不兼容的“Jet”驱动程序


现在我完全了解了可用的解决方法(在更改IIS运行方式等方面),但是我想知道是否有“Jet”驱动程序的替代品,这样我就可以从64位服务器上运行的Asp.Net中读取和生成excel工作表,而无需对IIS进行任何修改。

上次我研究时,没有x64驱动程序。我用它来打开xls文件。只要您使用x86编译,它就可以在64位框上工作

 DataSet myDataset = new DataSet();
                string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + @";Extended Properties=""Excel 12.0 Xml;HDR=YES""";
                OleDbConnection myData = new OleDbConnection(strConn);
                try {
                                      myData.Open();
                }
                catch (OleDbException e) {
                    try {
                        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=Excel 8.0;HDR=YES;";
                        myData = new OleDbConnection(strConn);
                        myData.Open();
                    }
                    catch (Exception e2) {
                        strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + @";Extended Properties=""HTML Import;HDR=YES;IMEX=1"";";
                        myData = new OleDbConnection(strConn);
                        myData.Open();
                    }
                }

                int i = 0;
                foreach (DataRow row in myData.GetSchema("tables").Rows)
                    try {
                        i++;
                        string name = row[2].ToString().Replace("''", "'").TrimEnd('_');
                        DataSet ds = new DataSet();
                        OleDbDataAdapter d = new OleDbDataAdapter("SELECT * from [" + name + "]", strConn);
                        d.Fill(ds);
                        DataTable dt = ds.Tables[0].Copy();
                        dt.Namespace = name;
                        myDataset.Tables.Add(dt);
                    }
                    catch (Exception e) {
                    }
                return myDataset;

你有没有想过试一试呢?

我自己在带有IIS 6.0的64位服务器上使用它
虽然不是最容易使用的,但它运行良好(快速、可靠,不需要在服务器上安装office等)。

如果这是一个网站,但未编译?网站仍在编译中。此代码将在您的asp.net应用程序中运行。我理解这一点。告诉你什么会让它旋转,然后带着问题回来。当我导出文件和我上传的同一个文件时,只要我做了一些更改并保存这些更改,然后再次尝试导入,那么代码就不起作用了。foreach找不到表时出错