惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 离线

Arduino语法详解_含示例详解 用C#实现的几种常用数据校验方法整理(CRC校验;LRC校验;BCC校验;累加和校验) C#设计模式 ---- 总结汇总(转载) 压缩包Zip格式详析(全网最详细) MQTT介绍 mDNS知识 转(zip文件格式说明) 学习笔记 彻底明白Zigbee术语——群集(Cluster)、端点(EndPoint)等 转载:IconFont(矢量图标字体)在Winform中的应用 ESA SNAP中超分模块处理Sentinel-2数据效果图 Windows 下安装 RabbitMQ服务异常 安装RabbitMQ时出现Plugin configuration unchanged,RabbitMQ服务启动几秒后自动关闭, http://127.0.0.1:15672/页面无法访问一并解答 windows10环境下的RabbitMQ安装步骤(图文) .NET Core 微服务架构学习与实践系列文章目录 .Net 微服务架构技术栈的那些事 Newtonsoft.Json高级用法 WPF:选择器(selector) MVVM处理TreeView的SelectedItem的绑定的两种方式
C# 使用OLEDB 读不出 Excel 参数配置说明 Excel 12.0; HDR=Yes; IMEX=1;READONLY=1
离线 · 2023-04-12 · via 博客园 - 离线
        /// <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表数据列是单一数据类型还是混合数据类型,是由取样行决定而不由整列数据决定。

读取excel单元格数据,当单元格数据长度大于255时,只能读取到前面长度为255字符,后面的字符会自动被截掉

 这个是EXCEL驱动问题,需要改注册表的

在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel中TypeGuessRows

的数据是25,所以我的程序在读取前25行数据不存在数据截断的问题.如果将他设置为0,所有问题都不存在了

 注意: 有关性能方面的考虑,将 TypeGuessRows 值设置为零 (0) 不建议如果您的 Excel 表格非常大。 如果此值被设置为零,Microsoft Excel 将扫描您的表以确定每一列中的数据类型中的所有记录。


————————————————
版权声明:本文为CSDN博主「JIngles123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40467670/article/details/120021346