首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ExcelLibrary中使用.NET时无效数据

在ExcelLibrary中使用.NET时无效数据
EN

Stack Overflow用户
提问于 2016-06-03 12:05:41
回答 1查看 886关注 0票数 1

我需要从xls文件中读取单元格中的DateTime,但是单元格内容无效,而不是将内容作为日期或字符串返回一个数字。读取文件的代码:

代码语言:javascript
复制
using System.IO;
using ExcelLibrary.SpreadSheet;

namespace XLSX_reader
{
   class Program
   {
       private static ExcelDocument XlsDocument { get; set; }
       static void Main(string[] args)
       {
            var inputStream = new     MemoryStream(File.ReadAllBytes("d:\\Work\\Flexportal_Other\\Importers\\11-2016_Uitzendrapportage_SRS_Personeel_85873112442611460665848.xls"));
        XlsDocument = new ExcelDocument(inputStream, null);
        Cell cell1 = XlsDocument.GetCell(6, 4);
        XlsDocument.GetCell(5, 7);
        var date = ExcelDocument.ParseDateTime(cell1);
    }
  }
}

ExcellDocument类:

代码语言:javascript
复制
namespace XLSX_reader
{
    public class ExcelDocument
    {
        public ExcelDocument(MemoryStream stream, string sheetName = null)
        {
            Workbook = LoadWorkbook(stream);
            if (Workbook == null)
            {
                throw new InvalidOperationException("err");
             }

             Worksheet = LoadWorksheet(sheetName);
        }
     public Worksheet LoadWorksheet(string sheetName = null)
    {
        if (Workbook == null)
        {
            throw new InvalidOperationException(
                "##(Load workbook before loading worksheets)(Open eerst een werkboek alvorens een werkblad te openen)##");
        }

        Worksheet = sheetName != null
            ? Workbook.Worksheets.FirstOrDefault(ws => ws.SheetType == SheetType.Worksheet && ws.Name == sheetName)
            : Workbook.Worksheets.FirstOrDefault(ws => ws.SheetType == SheetType.Worksheet);

        if (Worksheet == null)
        {
            throw new InvalidOperationException("##noWorksheetLoaded##");
        }

        RowIndexMin = Worksheet.Cells.FirstRowIndex;
        RowIndexMax = Worksheet.Cells.LastRowIndex;
        _rowIndex = RowIndexMin - 1;

        return Worksheet;
    }
    public Cell GetCell(int row, int column)
    {
        return Worksheet.Cells[row, column];
    }
  }
 }

xls看起来如下所示:

细胞的读数是这样的:

结果是42443,不是约会什么的。你知道为什么会发生这种事吗?我该怎么解决呢?谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-06-03 12:31:30

Excel将日期存储为数字,特别是自1900年1月1日以来的天数。微软文章

Excel将所有日期存储为整数,将所有时间存储为十进制分数。使用此系统,Excel可以添加、减去或比较日期和时间,就像任何其他数字一样,所有日期都由此系统操作。 在这个系统中,序列号1表示1/1/1900 12:00:00。时间存储为.0和.99999之间的十进制数,其中.0为00:00:00,.99999为23:59:59。可以将日期整数和时间小数分数组合起来创建具有小数和整数部分的数字。例如,数字32331.06代表日期和时间7/7/1988 1:26:24上午。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37613955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档