【发布时间】:2018-05-18 20:02:44
【问题描述】:
我正在尝试从 excel 中读取工作表数据(尝试了 oldedb 和 odbc),发现有 255 个字符的限制。
我尝试按照其他线程中的建议使用Range 对象
(SELECT * FROM [ref_MethodInput$A1:S362])
但仍然没有运气。那么除了使用互操作之外,还有其他方法可以克服这个问题吗?注册表编辑也不可取,因为这需要在所有客户端计算机上进行注册表编辑。
【问题讨论】:
我正在尝试从 excel 中读取工作表数据(尝试了 oldedb 和 odbc),发现有 255 个字符的限制。
我尝试按照其他线程中的建议使用Range 对象
(SELECT * FROM [ref_MethodInput$A1:S362])
但仍然没有运气。那么除了使用互操作之外,还有其他方法可以克服这个问题吗?注册表编辑也不可取,因为这需要在所有客户端计算机上进行注册表编辑。
【问题讨论】:
既然问题出在 Jet Provider 上,何不试试 ODBC 连接下列出的 Microsoft Excel 驱动程序。
【讨论】:
下面的代码对我有用。 从 excel (.xls & .xlsx) 文件导入数据(适用于超过 255 个字符的列值)。
using Excel;
try
{
FileStream stream = File.Open(strFilePath, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = null;
if (extension.Trim() == ".xls")
{
excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
}
else if (extension.Trim() == ".xlsx")
{
excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
excelReader.Close();
}
catch (Exception err)
{
mResult.Message = err.Message;
}
下载 nuget 包: 1)PCLStorage(版本:1.0.2) 2) ExcelDataReader-DevNet45(版本:1.0.0.2)
【讨论】: