两个月了,也没有解决的问题(Excel方面的),有请高手帮忙 奇怪啊,我好像没有发现你说的问题啊。无论是用.NET(调用COM)访问EXCEL,还是在EXCEL中写宏,得到的结果都正确的啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在Excel中输入内容之前,把A1设为字符格式,B1设为时间格式.下面是全部代码,B1单元格的类型是双精度型,是一串数字,不能转成时间格式,请各位帮忙看一下.谢谢string FileName=null;OpenFileDialog dlg=new OpenFileDialog();if(dlg.ShowDialog()==DialogResult.OK) FileName=dlg.FileName;else return;Excel.ApplicationClass excel=new Excel.ApplicationClass ();Excel.Workbook workbook=excel.Workbooks.Open(FileName,Missing.Value,Missing.Value,Missing.Value,null,null,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);Excel.Sheets sheets=workbook.Sheets;Excel.Worksheet worksheet=(Excel.Worksheet)sheets.get_Item(1);Excel.Range rangea=worksheet.get_Range(worksheet.Cells[1,1],worksheet.Cells[1,1]);string s1=rangea.Value.GetType().ToString ();MessageBox.Show(s1);//System.String类型DateTime dt1=Convert.ToDateTime(rangea.Value);//没问题MessageBox.Show(dt1.ToString());Excel.Range rangeb=worksheet.get_Range(worksheet.Cells[1,2],worksheet.Cells[1,2]);string s2=rangeb.Value.GetType().ToString ();MessageBox.Show(s2);//System.Double类型DateTime dt2=Convert.ToDateTime(rangeb.Value);//不能转换成时间类型 值是0.88208333333333344这样的数字MessageBox.Show(dt2.ToString());excel.Quit(); 我知道你的问题出在哪里了!!!!请比较Range对象的Text属性和Value属性,你应该用Text。:) To 无锋 多谢.已经解决了,另外想问一下,Value和Text两个属性有什么区别,两个属性各应该用在什么地方.谢谢. 不用客气。你不问这个问题,我倒也从来没注意过它。照我看来(未必说的完全正确),Text其实就是单元格中显示出来的内容,即被格式化过了的Value,甚至有时格子不够宽的时候,内容会显示成"#######",此时读出来的Text就是"#######";而Value就是单元格中真正的内容。但是有一种格式好像是例外(我的猜测),那就是日期。比如在A1中输入123,然后将A1格式化为日期型,此时读取的Value是1900-5-2,而它的Text是你看到的“值”,具体看你选择那种日期格式了。 out参数的问题,急!在线等 wpf 后台c#加密xml 关于图片优化的问题 C#适时监听IP端口 c#怎样启用本地连接? 怎样给2003增加系统用户,并设置成允许VPN连接? 线程如何调用带返回参数的方法,并返回值 请教三层模式的问题?? Graphics 实例化 问题 有没有C#版本的Guava Cache组件 请问哪位大虾晓得怎么修复iis;不要重新安装.谢谢! 请问用csc能不能编译项目,我的意思是不用VS.NET可不可以编译项目
下面是全部代码,B1单元格的类型是双精度型,是一串数字,不能转成时间格式,
请各位帮忙看一下.谢谢string FileName=null;
OpenFileDialog dlg=new OpenFileDialog();
if(dlg.ShowDialog()==DialogResult.OK)
FileName=dlg.FileName;
else
return;
Excel.ApplicationClass excel=new Excel.ApplicationClass ();
Excel.Workbook workbook=excel.Workbooks.Open(FileName,Missing.Value,Missing.Value,Missing.Value,null,null,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
Excel.Sheets sheets=workbook.Sheets;
Excel.Worksheet worksheet=(Excel.Worksheet)sheets.get_Item(1);
Excel.Range rangea=worksheet.get_Range(worksheet.Cells[1,1],worksheet.Cells[1,1]);
string s1=rangea.Value.GetType().ToString ();
MessageBox.Show(s1);//System.String类型
DateTime dt1=Convert.ToDateTime(rangea.Value);//没问题
MessageBox.Show(dt1.ToString());
Excel.Range rangeb=worksheet.get_Range(worksheet.Cells[1,2],worksheet.Cells[1,2]);
string s2=rangeb.Value.GetType().ToString ();
MessageBox.Show(s2);//System.Double类型
DateTime dt2=Convert.ToDateTime(rangeb.Value);//不能转换成时间类型 值是0.88208333333333344这样的数字
MessageBox.Show(dt2.ToString());
excel.Quit();
请比较Range对象的Text属性和Value属性,你应该用Text。
:)
多谢.已经解决了,另外想问一下,Value和Text两个属性有什么区别,两个属性
各应该用在什么地方.谢谢.
你不问这个问题,我倒也从来没注意过它。
照我看来(未必说的完全正确),Text其实就是单元格中显示出来的内容,即被格式化过了的Value,甚至有时格子不够宽的时候,内容会显示成"#######",此时读出来的Text就是"#######";而Value就是单元格中真正的内容。
但是有一种格式好像是例外(我的猜测),那就是日期。比如在A1中输入123,然后将A1格式化为日期型,此时读取的Value是1900-5-2,而它的Text是你看到的“值”,具体看你选择那种日期格式了。