qq_26624753
2019-09-06 17:44
采纳率: 81.8%
浏览 578

C#使用OLEDB读取Excel问题

Excel里有一列叫"No.",读取之后变成了No#,求大神

                        DataTable dt = new DataTable();
            string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'", fileName);
            OleDbConnection conn = new OleDbConnection(connectionString);
            try
            {
                conn.Open();//打开数据库
                string sql = @"[" + sheetName + "$] where 1=1";
                OleDbCommand cmd = new OleDbCommand(sql, conn);
                OleDbDataAdapter apt = new OleDbDataAdapter(cmd);
                apt.Fill(dt);
                dt.TableName = "Report";

            }
            catch (Exception ex)
            {
                dt = new DataTable();
            }
            finally
            {
                conn.Close();
            }
            return dt;
        }

图片说明
图片说明

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • evianwu 2019-09-18 10:56
    已采纳

    不是你代码的问题,受限于解析的驱动之类,即使单个点号是标题,也换被转成#号,,,,可以换些别的解析excel的驱动试试

    已采纳该答案
    打赏 评论
  • threenewbee 2019-09-06 18:41

    excel的单元格的格式决定了内容的含义,比如说,No.是不是被当作数字列,而.成为了小数点。
    建议用NPOI而不是OleDb读取excel,可以得到更精确的内容

    打赏 评论
  • wilson1966 2019-09-09 09:27

    提供你一个简单的方法
    就是将Excel 列名改为中文名称
    如NO. 改为 [编号] ,即可避免出现#符号的问题
    我都是这样做的

    打赏 评论

相关推荐 更多相似问题