首页 > 编程语言 >C# 使用OLEDB 读不出 Excel 参数配置说明 Excel 12.0; HDR=Yes; IMEX=1;READONLY=1

C# 使用OLEDB 读不出 Excel 参数配置说明 Excel 12.0; HDR=Yes; IMEX=1;READONLY=1

时间:2023-04-12 09:13:39浏览次数:45  
标签:读取 OLEDB C# IMEX Excel 数据类型 数据 HDR

        /// <summary>
        /// Excel文件连接字符串
        /// </summary>
        private const string excelConnnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1;READONLY=1'";

  

ADO.NET读取Excel数据时,发现有的数据读出来为空,有的数据可以正确读取。
为此,打开excel表格,发现有的读不出是因为加入了除去数字之外的其他字符,网上了好些内容,最后才搜出来问题的原因,及其解决的方法。如下:

先了解下HDR和IMEX:
1、HDR=YES表示excel的第一行为标题行,不把它作为数据使用,因此,如果HDR的值设为NO,则说明第一行不是标题行,作为数据使用。系统默认是YES。参数Excel 8.0 对于Excel 97以上到2003版本都用Excel 8.0,2007或2010的都用Extended Properties=Excel 12.0。
2、IMEX(IMport EXport mode)的三种模式:
IMEX=0:输出模式,这个模式开启的 Excel 档案只能用来做“写入”用途。
 IMEX=1:输入模式,这个模式开启的 Excel 档案只能用来做“读取”用途。
 IMEX=2:链接模式(完全更新能力),这个模式开启的 Excel 档案可同时支持“读取”与“写入”用途。

问题的描述及出现的原因:
问题描述:C#项目使用OLEDB读取excel时,会出现某些数据读不出来的问题,读出是空白,查看excel文件,在出现问题的这一列中,字符串格式和数字格式两种同时存在,如果全部改成数字,则不会出现问题,当某个单元格中出现了除数字以外的其他字符,则不能正确显示单元格中的内容。

出现的原因:IMEX=1时将单元格内容混合数据强制转换为文本类型,但只能确保在某列前8行数据至少有一个是文本项的时才起作用。若某列前8行数据全为纯数字,则它仍以数字类型作为该列的数据类型,随后行里的含有文本的数据仍然变空。

问题解决:
premise:IMEX=1
方法一:在混合列中,在所有单元格内容的最前面“ ’ ”
方法二:修改项目所在机器的注册表值TypeGuessRows,其值决定了程序从前几条数据采样确定数据类型,默认为“8”。修改“HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel”下的该TypeGuessRows值来更改采样行数。若设为0,将分析所有数据行。
如下图所示:

 

 

注意:Excel表数据列是单一数据类型还是混合数据类型,是由取样行决定而不由整列数据决定。
————————————————
版权声明:本文为CSDN博主「JIngles123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40467670/article/details/120021346

标签:读取,OLEDB,C#,IMEX,Excel,数据类型,数据,HDR
From: https://www.cnblogs.com/li-sx/p/17308594.html

相关文章

  • 《U8开发听我说》第七讲:凭证无界面CO接口
    很多做用友U8二开的同学在问,有没有凭证接口,其实凭证有很多接口,今天我们就来一一罗列下:有界面凭证接口(类似业务模块制单功能),后续会介绍如何使用EAI接口无界面凭证接口,即原生CO接口今天我们来重点介绍下无界面凭证接口。此组件是提供U8会计凭证录入的无界面交互组件,完......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能多功能学习机从0到1快速入门——官网推荐
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • C#:Cookie设置
    记录工作中遇到的一些Cookie设置的问题:异常:参数“{0}”不能是空字符串。参数名:cookie.Domain解决方案:在Cookie设置中加上你访问的域名,例:将Cookie设置Cookiec1=newCookie("name_xxxx","value_xxxx");修改为Cookiec1=newCookie("name_xxxx","value_xxxx","/&qu......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能评论创建从0到1快速入门——官网推荐的48
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • docker介绍与安装
    docker介绍什么是虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器,网络,内存及存储等,予以抽象,转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资......
  • CSGO准星代码
    CSGO-at3tC-w6puH-VM7wr-c3wSu-5L5mA viewmodel_fov68; viewmodel_offset_x2.5; viewmodel_offset_y0; viewmodel_offset_z-1.5; viewmodel_presetpos3; cl_viewmodel_shift_left_amt1.5; cl_viewmodel_shift_right_amt0.75; viewmodel_recoil0; cl_ri......
  • Selling Products
    AsalespersonmustsellnitemsinabagwithrandomIDs.Thesalespersoncanremoveasmanyasmitemsfromthebag.DeterminetheminimumnumberofdifferentIDsthefinalbagcancontainafterperforming,atmost,mdeletions.Examplen=6ids=[1,1......
  • 逍遥自在学C语言 位运算符 "|" 的5种高级用法
    前言在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍|运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、将两个字节合并成一个16位整数#inclu......
  • 【C++】统计文本词频程序
    1#include<iostream>2#include<fstream>3#include<string>4#include<iomanip>5#include<vector>6#include<map>7#include<cctype>8#include<algorithm>9boolcmp(std::pair<std::strin......
  • java反序列化(三) JDBC反序列化
    JDBC反序列化前置知识JDBCJDBC(JavaDatabaseConnectivity)是Java提供对数据库进行连接、操作的标准API。Java自身并不会去实现对数据库的连接、查询、更新等操作而是通过抽象出数据库操作的API接口(JDBC),不同的数据库提供商必须实现JDBC定义的接口从而也就实现了对数据库的......