gpt4 book ai didi

c# - 如何使用 C# 从远程位置将 Excel csv 或 xls 文件的行读取到 ASP.NET 应用程序中?

转载 作者:行者123 更新时间:2023-11-30 15:33:32 25 4
gpt4 key购买 nike

这是我的情况。我正在设计一个程序,它从远程网络驱动器获取 Excel 文件(可能是 csv、xls 或 xlsx 格式)、处理数据,然后输出并存储该过程的结果。该程序提供了一个文件名列表框,这些文件名是使用已接受的答案 here 中详述的方法从远程网络驱动器文件夹中获取的。 .一旦用户从列表框中选择了一个文件名,我希望程序找到该文件并从中获取信息以进行数据处理。我试过使用 this在线程安全上下文中从 Excel 文件读取数据的方法,但该方法只是失败而没有给出任何类型的错误。它似乎没有终止。我是不是用错了方法?

编辑 -(最后说明:我已经取出 OleDbDataAdapter 并将其替换为 EPPlus 处理。)

我能够从代码中清除敏感数据,所以这里是:

protected void GetFile(object principalObj)
{
if (principalObj == null)
{
throw new ArgumentNullException("principalObj");
}

IPrincipal principal = (IPrincipal)principalObj;
Thread.CurrentPrincipal = principal;
WindowsIdentity identity = principal.Identity as WindowsIdentity;
WindowsImpersonationContext impersonationContext = null;
if (identity != null)
{
impersonationContext = identity.Impersonate();
}
try
{
string fileName = string.Format("{0}\\" + Files.SelectedValue, @"RemoteDirectoryHere");
string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.14.0; data source={0}; Extended Properties=Excel 14.0;", fileName);

OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Sheet1", connectionString);
DataSet ds = new DataSet();

adapter.Fill(ds, "Sheet1");

dataTable = ds.Tables["Sheet1"];
}
finally
{
if (impersonationContext != null)
{
impersonationContext.Undo();
}
}
}

额外编辑

现在 xlsx 文件已添加到组合中。

第三方

在这种情况下,第三方解决方案是 Not Acceptable (除非它们允许不受限制的商业用途)。

尝试 -(最后说明:最终我不得不放弃 OleDb 连接。)

我已经尝试了所有提供的不同连接字符串,并且一次只尝试了一种文件类型。没有任何连接字符串适用于任何文件类型。

权限

用户确实可以访问该文件及其目录。

最佳答案

您的连接字符串可能是这里的问题。据我所知,没有 1 可以读取所有 xls、csv 和 xlsx。我认为您使用的是 XLSX 连接字符串。

当我读取 xls 时,我使用以下连接字符串:

@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ sFilePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'"

话虽如此,我建议使用第 3 方文件读取器/解析器来读取 XLS 和 CSV,因为根据我的经验,OleDbDataAdapter 不稳定,具体取决于正在读取的数据类型(以及它们在每一列中的混合程度) .

对于 XLS,请尝试 NPOI https://code.google.com/p/npoi/

对于 CSV,请尝试 http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

对于 XLSX,尝试 EPPlus http://epplus.codeplex.com/

我在上述库中取得了巨大的成功。

关于c# - 如何使用 C# 从远程位置将 Excel csv 或 xls 文件的行读取到 ASP.NET 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com