DataSet ds = new DataSet();
cl_initPage.v_DeBugLog("ExcelDataSource进入"); string strConn;
strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filepath + ";Extended Properties='Excel 12.0; HDR=No; IMEX=1'"; OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "$]", strConn); oada.Fill(ds);
conn.Close();
cl_initPage.v_DeBugLog("ExcelDataSource退出");
DataTable dt = ds.Tables[];

前些日子在使用winform读取Excel的时候,总是出现被截断的现象,经过测试以及读取内容的分析,发现截取的长度都是相等的,即255个字符,对此在网上的资料也不是太多,后来经过找资料以及自己的测试,终于找到解决问题的方法了:

 原文地址 http://www.cnblogs.com/soonssa/archive/2012/05/20/2509376.html

解决办法:

  如果是:Jet引擎.
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

  如果是:ACE引擎.
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel

  然后找到 TypeGuessRows这个项.默认为8的.修改为0.

但是,前8行必须有一个单元格大于255个字符,否则还是会自动截取,对此,出现了一下的另一种办法:

  在读取遍历的时候记录一下,如果前八行,有大于255个字符的,就正常读取,如果没有,那么就只能再去重新读取一遍,读取的方法是读取某一个单元格,这样是可以正确读取的

 public void ExcelDataSource( DataTable dt){
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
for (int i = ; i < dt.Rows.Count; i++)
{
Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open(filepath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
Microsoft.Office.Interop.Excel.Range range;
range = (Microsoft.Office.Interop.Excel.Range)sheet.Cells[i + , ];
string s = range.Formula.ToString();
dt.Rows[i][] = s;
}
Kill(excel);
} #region 杀死束Excel进程
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
public static void Kill(Microsoft.Office.Interop.Excel.Application excel)
{
IntPtr t = new IntPtr(excel.Hwnd); //得到这个句柄,具体作用是得到这块内存入口 int k = ;
GetWindowThreadProcessId(t, out k); //得到本进程唯一标志k
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用
p.Kill(); //关闭进程k }
#endregion

读取Excel,单元格内容大于255个字符自动被截取的问题的更多相关文章

  1. Excel单元格内容太多会覆盖遮住下一单元格范围

    Excel单元格内容太多会覆盖遮住下一单元格范围分步阅读 Excel中的单元格内容,有着不同的对齐方式.用户可根据自己的需求,在处理数据的时候,自行设置所需要的对齐方式. 当您在处理数据的时候,如果设 ...

  2. poi 升级至4.x 的问题总结(POI Excel 单元格内容类型判断并取值)

    POI Excel 单元格内容类型判断并取值 以前用 cell.getCachedFormulaResultType() 得到 type 升级到4后获取不到了 换为:cell.getCellType( ...

  3. excel 单元格内容太多,替换有问题

    excel 单元格内容太多,替换有问题

  4. C# ASP.NET 读取EXCEL 单元格 读取 空值 不显示

    跟大家分享一下,[摘自]:http://blog.csdn.net/li185416672/article/details/8213729 读取excel时,某些单元格为空值 原来如此: 当我们用ol ...

  5. Excel单元格内容拆分、合并

    例:如何将EXCEL单元格A1中的“1-2-1”,在B1.C1.D1单元格中分别显示”1“.”2“.”1“.方法一: 在B1中输入“=mid(A1,1,1)”在C1中输入“=mid(AI,3,1)”在 ...

  6. excel单元格内容拆分

    这几天在整理数据,但是数据都在表格的一个单元格中,看起来很不方法,所以在网上找到excel单元格内如拆分的方法,并亲测有效 介绍2种拆分的方法 方法一: (1)在B1输入公式=right(text,[ ...

  7. excel单元格中批量加入固定字符

    excel单元格前怎么批量加字母 现在我要在联系人这列,每个姓名前加入衡阳的首字母简写(HY). 3 在同行上面随便找列,我找D列.输入公式:="HY"&A2. 5 输入后 ...

  8. C# 开源组件--NPOI读取Excel单元格中的公式值

    今天在项目中碰到了EXCEL导入的数据是用公式生成,直接导入不了数据,写在博客中方便自已查询也可以给想找这方面的参考一下: 用NPOI导入时,在OFFICE 2007中的文件导入时一般会用XSSF,所 ...

  9. Excel单元格内容批量加前缀

    比如83190001在A1单元格,要在A列单元内容前面批量加0,在B1输入公式="0"&A1然后向下复制再把B列复制的结果再复制一下:然后到新的一列粘贴,在“粘贴选项”中选 ...

随机推荐

  1. ElasticSearch改造研报查询实践

    背景: 1,系统简介:通过人工解读研报然后获取并录入研报分类及摘要等信息,系统通过摘要等信息来获得该研报的URI 2,现有实现:老系统使用MSSQL存储摘要等信息,并将不同的关键字分解为不同字段来提供 ...

  2. 非阻塞tcp服务器与阻塞的tcp服务器对比

    一般的tcp服务器(阻塞)是使用的如下 [erlang] gen_tcp传输文件原型 http://www.cnblogs.com/bluefrog/archive/2012/09/10/267904 ...

  3. 使用session统计在线人数

    效果图如下 这里是Chrome浏览器新登录一个用户 代码展示 package com.test.Util; import java.util.ArrayList; import javax.servl ...

  4. github隐藏文件&删除文件

    一.隐藏文件不提交至github 例如:需隐藏node_modules文件夹 1.找到.gitignore文件,一般这个是隐藏文件,需要显示隐藏文件 2.编辑.gitignore文件,加入下面这一句话 ...

  5. CodeIgniter框架解析

    转载于:https://www.cnblogs.com/xiaoxiaoqingyi/p/6901654.html 转载仅为以后自己学习. 业余花了点时间看看CodeIgniter框架(简称CI),C ...

  6. HDFS的一些重要流程

    该随笔记录HDFS学习过程中遇到的比较重要的几个过程,包括:HDFS启动流程.DataNode备份流程.流程.写流程.删除流程.HDFS合并流程.这里都是从我的学习笔记中摘取出来的,如果哪里有误,还望 ...

  7. mpvue学习笔记(一) 基础介绍

    一. 小程序环境搭建 后台地址:https://mp.weixin.qq.com/ 文档地址:https://developers.weixin.qq.com/miniprogram/dev/ 注册账 ...

  8. Tensorflow(添加噪声的方式)

    在去噪自编码器中,模型的输入是原始的输入经过某种形式的加噪过程后的衰弱的形式,所以加噪声一般分为:加高斯白噪声,掩模噪声,椒盐噪声. 1.加性高斯噪声 self.scale = tf,placehol ...

  9. http协议与https协议的前世今生

    一.Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ...

  10. Binary Search 二分法方法总结

    Binary Search 二分法方法总结 code教你做人:二分法核心思想是把一个大的问题拆成若干个小问题,最重要的是去掉一半或者选择一半. 二分法模板: public int BinarySear ...