问题描述
当我用这句代码if(xlsheet3.Cells[1,j]==(dt.Columns[i].HeaderText))来判断excel表里的字段是否等于datagridview控件里的标题字段时,得到的结果都是不等于,但是它们是有共同字段的。这句话警告我要把左边的转换成string类型,但是转换过后还是没得相等的情况,求求各位大神,怎么才能让它们出现相等的情况!!这是datagridview里的标题字段这是excel表里的字段
解决方案
解决方案二:
把excel中的数据也读取成datatable,对比这2个datatable。网上都有代码
解决方案三:
读取,根据规则匹配,转换为字符串再去除空格后比较
解决方案四:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的
解决方案五:
引用1楼duanzi_peng的回复:
把excel中的数据也读取成datatable,对比这2个datatable。网上都有代码
我后面还要把datagridview里的数据读取到excel与之对应的字段下,这样也可以吗
解决方案六:
引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的
我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
解决方案七:
引用2楼changjiangzhibin的回复:
读取,根据规则匹配,转换为字符串再去除空格后比较
大神,能具体点嘛,我现在就是要把datagridview里面的数据导出到excel对应的字段下面
解决方案八:
引用5楼baidu_30536197的回复:
Quote: 引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
你在Cells后面加上.Value。例如if(xlsheet3.Cells[1,j].Value==(dt.Columns[i].HeaderText))就可以读出来了
解决方案九:
引用7楼lqyyawq的回复:
Quote: 引用5楼baidu_30536197的回复:
Quote: 引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
你在Cells后面加上.Value。例如if(xlsheet3.Cells[1,j].Value==(dt.Columns[i].HeaderText))就可以读出来了
我试了啊,但是它报错了,说什么object不存在Value的方法或属性,缺少using指令
解决方案十:
引用8楼baidu_30536197的回复:
Quote: 引用7楼lqyyawq的回复:
Quote: 引用5楼baidu_30536197的回复:
Quote: 引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
你在Cells后面加上.Value。例如if(xlsheet3.Cells[1,j].Value==(dt.Columns[i].HeaderText))就可以读出来了
我试了啊,但是它报错了,说什么object不存在Value的方法或属性,缺少using指令
我自己试了一下stringa=sheet.Cells[1,1].Value是可以顺利读取的。而且我的程序里sheet.Cells[1,1]显示的是dynamic类型。
解决方案十一:
引用9楼lqyyawq的回复:
Quote: 引用8楼baidu_30536197的回复:
Quote: 引用7楼lqyyawq的回复:
Quote: 引用5楼baidu_30536197的回复:
Quote: 引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
你在Cells后面加上.Value。例如if(xlsheet3.Cells[1,j].Value==(dt.Columns[i].HeaderText))就可以读出来了
我试了啊,但是它报错了,说什么object不存在Value的方法或属性,缺少using指令
我自己试了一下stringa=sheet.Cells[1,1].Value是可以顺利读取的。而且我的程序里sheet.Cells[1,1]显示的是dynamic类型。
哎,我的怎么就不行呢,会不是是Xlsheet3这个的原因啊,我的xlsheet3=xlbook.Sheets[3]asMicrosoft.Office.Interop.Excel.Worksheet;
解决方案十二:
引用10楼baidu_30536197的回复:
Quote: 引用9楼lqyyawq的回复:
Quote: 引用8楼baidu_30536197的回复:
Quote: 引用7楼lqyyawq的回复:
Quote: 引用5楼baidu_30536197的回复:
Quote: 引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
你在Cells后面加上.Value。例如if(xlsheet3.Cells[1,j].Value==(dt.Columns[i].HeaderText))就可以读出来了
我试了啊,但是它报错了,说什么object不存在Value的方法或属性,缺少using指令
我自己试了一下stringa=sheet.Cells[1,1].Value是可以顺利读取的。而且我的程序里sheet.Cells[1,1]显示的是dynamic类型。
哎,我的怎么就不行呢,会不是是Xlsheet3这个的原因啊,我的xlsheet3=xlbook.Sheets[3]asMicrosoft.Office.Interop.Excel.Worksheet;
这样吧,你别用.Value。你用.Text再试试。
解决方案十三:
引用11楼lqyyawq的回复:
Quote: 引用10楼baidu_30536197的回复:
Quote: 引用9楼lqyyawq的回复:
Quote: 引用8楼baidu_30536197的回复:
Quote: 引用7楼lqyyawq的回复:
Quote: 引用5楼baidu_30536197的回复:
Quote: 引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
你在Cells后面加上.Value。例如if(xlsheet3.Cells[1,j].Value==(dt.Columns[i].HeaderText))就可以读出来了
我试了啊,但是它报错了,说什么object不存在Value的方法或属性,缺少using指令
我自己试了一下stringa=sheet.Cells[1,1].Value是可以顺利读取的。而且我的程序里sheet.Cells[1,1]显示的是dynamic类型。
哎,我的怎么就不行呢,会不是是Xlsheet3这个的原因啊,我的xlsheet3=xlbook.Sheets[3]asMicrosoft.Office.Interop.Excel.Worksheet;
这样吧,你别用.Value。你用.Text再试试。
一样的,不知道为什么我的xlsheet3.Cells[1,j]返回类型是Object,所以根本没得那些属性,难道是我缺少using引用了?
解决方案十四:
引用12楼baidu_30536197的回复:
Quote: 引用11楼lqyyawq的回复:
Quote: 引用10楼baidu_30536197的回复:
Quote: 引用9楼lqyyawq的回复:
Quote: 引用8楼baidu_30536197的回复:
Quote: 引用7楼lqyyawq的回复:
Quote: 引用5楼baidu_30536197的回复:
Quote: 引用3楼lqyyawq的回复:
你先设置一个断点,人工看看它的数据是不是确实是一样的,如果不一样就是程序中出了问题了,否则应该不会发生这种事的我已经试过了,比如说xlsheet3.Cells[1,j]的值确实是FID,但是类型和后面的dt.Columns[i].HeaderText类型不一样,提示xlsheet3.Cells[1,j]要转换成string类型,我转换成xlsheet3.Cells[1,j].ToString()后的值就变成Object_Com什么的玩意儿
你在Cells后面加上.Value。例如if(xlsheet3.Cells[1,j].Value==(dt.Columns[i].HeaderText))就可以读出来了
我试了啊,但是它报错了,说什么object不存在Value的方法或属性,缺少using指令
我自己试了一下stringa=sheet.Cells[1,1].Value是可以顺利读取的。而且我的程序里sheet.Cells[1,1]显示的是dynamic类型。
哎,我的怎么就不行呢,会不是是Xlsheet3这个的原因啊,我的xlsheet3=xlbook.Sheets[3]asMicrosoft.Office.Interop.Excel.Worksheet;
这样吧,你别用.Value。你用.Text再试试。
一样的,不知道为什么我的xlsheet3.Cells[1,j]返回类型是Object,所以根本没得那些属性,难道是我缺少using引用了?
我也不清楚为什么你的是Object类型,我的是dynamic类型,所以可以通过编译。这样吧,你强制转换一下。stringa=((Microsoft.Office.Interop.Excel.Range)sheet.Cells[1,1]).Text如何还不行我也没辙了。