繁体   English   中英

在C#中读取Excel文件时获取######值

[英]Getting ###### values while reading excel file in C#

使用C#读取excel文件时遇到一个问题。 在我的Excel文件中,一列是DateTime,它在excel文件中的值很长。 因此,当我使用在C#中获得的相同C#值读取相同的Excel时,Excel会将其转换为######格式。 谁能帮忙:如何获取日期时间值而不是#####?

我的代码如下:

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
 ExcelObj = new Microsoft.Office.Interop.Excel.Application();
             Microsoft.Office.Interop.Excel.Workbook theWorkbook =   ExcelObj.Workbooks.Open(oldg.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
             Type.Missing, Type.Missing, Type.Missing, Type.Missing,
             Type.Missing, Type.Missing, Type.Missing, Type.Missing,
             Type.Missing, Type.Missing);
             Microsoft.Office.Interop.Excel.Sheets sheets = theWorkbook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);
for (int i = 3; i <= worksheet.UsedRange.Rows.Count; i++)
{
    var getvalue = excel_getValue("B" + i);
}

如果您有日期列并且值超出范围,则日期转换可能会失败。 如果在日期列中输入“ 5555555555555555555555555”(例如),则会得到一系列“ #####”,并且工具提示会指出:

负数或太大的日期和时间将显示为######。

造成这种情况的最常见原因是您拥有美国格式(MM / dd / yyyy)的日期,并且试图将其转换为欧洲格式(dd / MM / yyyy)的日期,或者没有转换字符串完全没有

有关Excel为什么显示“ ######”而不是实际列值的更多信息,请参见此超级用户问题。

尝试这样:-

var conv = DateTime.FromOADate("B"+i);

您需要读取Value2而不是相关单元格的Value Value将返回与单元格的显示内容相关的string ,而Value2将返回一个object ,该object显示Excel对该单元格的了解-即。 它可能是double,DateTime等,您将不得不对其进行测试并进行转换。

但是,我不确定您在代码中到底在做什么,好像您在此行中遗漏了什么?

var getvalue = excel_getValue("B" + i);

如果你的意思是

worksheet.getValue("B" + i);

这应该与worksheet.Value["B" + i] ,只需将Value替换为Value2 如果excel_getValue是您自己的功能类似的函数,请查找对Value属性的访问并将其更改为Value2 我通常按​​行号和列号访问事物,对我来说,这两个选项如下所示:

string value = worksheet.Cells[2, i].Value;
object val2 = worksheet.Cells[2, i].Value2;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM