c# - 如何处理 OleDb Excel 导入中的无效字符?

标签 c# excel oledb

我正在将 Excel 文件导入到我的应用程序中,有时工作表列名称中包含“$”符号。我收到此异常:

System.Data.OleDb.OleDbException was unhandled
Message=''6um$'$' is not a valid name. Make sure that it does not include invalid characters or punctuation and that it is not too long.

在此表中,“6um$”是列名称。

这是我的代码:

OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString);
OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter(
    "select * from [" + worksheetName + "$]", con);

con.Open();
System.Data.DataSet excelDataSet = new DataSet();
cmd.Fill(excelDataSet);
con.Close();

有什么想法如何处理这种情况吗?

编辑:

我认为问题出在列名中包含 $ 。但事实证明,问题在于工作表名称中有 $ 符号!

最佳答案

好的,我找到了解决方案: 由于某种原因,我自己重命名的工作表有额外的 $ 符号(不知道为什么,Excel 中没有 $ 符号,但 OLEDB 返回它们时带有额外的 $ ,例如 '6um$'$')。我修剪掉第一个 $ 并使用此代码检查是否还剩下任何额外的 $ 符号:

char delimiterChars = '$';
string[] words = worksheetName.Split(delimiterChars);
worksheetName=words[0];

关于c# - 如何处理 OleDb Excel 导入中的无效字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878092/

相关文章:

c# - Entity Framework Core 对 SQL 空间数据类型的支持 - DBGeography?

excel - VBA:如何找到包含给定范围内子字符串的单元格?

c# - .Net 访问超大型数据库的最佳方法是什么?

c# - 烛台多个 Y 值

java - 领域驱动设计实体和值对象

c# - 一个用于 UserControl 和 Window 的 ViewModel 或单独的 ViewModel

vba - 将公式或值公式插入单元格时,Excel VBA 运行时错误 1004

C# Excel 文件 OLEDB 读取 HTML IMPORT

c# - EXCEL 的 OLEDB - 删除表 [工作表名称$] - 不会删除工作表

c# - 如何在 Serenity 中创建动态菜单?