问题描述
这两天使用C#开发一个通过EXCEL将数据导入数据库的程序时遇到一个问题,EXCEL里面有6万行+的数据,使用开发的电脑导入是没有问题,从EXCEL里面读取出来的数据也是6万行。但是同样的程序放到服务器上,每次只能从EXCEL中读取出13866行。
上网百度,也一直没有找到问题点。连这个问题相关的提问也只有一个,还没有解决的。
这个dt出来的行数就只有13866
string strExcel = "Excel 12.0";
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strFilePath + strFileName + ";Extended Properties=\"" + strExcel + ";HDR=Yes;IMEX=1''\" ";
OleDbConnection conn = new OleDbConnection(strConn);
string sql = "SELECT * FROM [Sheet0$]";
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds, "Sheet0");
DataTable dt = ds.Tables[0];
解决过程
在看了网上说的修改注册表TypeGuessRows的值,IIS里面的【启用32位应用程序】,都不行
解决方案
后来仔细对比了两台电脑的注册表和IIS的设置,发现了两个电脑的差异点,调整之后就解决了这个问题。
应用程序池里面的标识不能选择ApplicationPoolIdentity,将其改成LocalSystem就可以了。
总结
因为自己在网上找这个问题的时候找不到解决方案,为了这个问题,从查程序到对照注册表到对照IIS,前后一共花费了5个多小时去解决这个问题。所以想这记录下来,也许有人遇到同样的问题可以能给到帮助。