【问题标题】:C# how to determine excel file versionC#如何判断excel文件版本
【发布时间】:2014-10-06 17:44:26
【问题描述】:

我正在使用 excel 数据阅读器,我注意到它与旧的 excel 5.0/95 工作簿文件不兼容。有没有办法在将 .xls 文件发送到 excel 数据阅读器之前获取它的版本,以防止发送早期版本的 excel 文件?

这是我现在使用的。

if (extension == ".XLS")
                    {
                        IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
                        excelReader.IsFirstRowAsColumnNames = true;
                        result = excelReader.AsDataSet();
                    }
                    else
                    {
                        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                        excelReader.IsFirstRowAsColumnNames = true;
                        result = excelReader.AsDataSet();
                    }

【问题讨论】:

    标签: c# excel exceldatareader


    【解决方案1】:

    你所拥有的是正确的。但是你可以让它更干净一些。例如:

    IExcelDataReader excelReader;
    
    if (String.Compare(extension, ".xls", true) == 0){
        excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
    } else if (String.Compare(extension , ".xlsx", true) == 0){
        excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
    }
    
    excelReader.IsFirstRowAsColumnNames = true;
    result = excelReader.AsDataSet();
    

    【讨论】:

    • 是的,谢谢。无需重复该代码。关于如何确定 .xls 文件是否早于 97 的任何建议?
    • @Mitch 有一种读取结构化存储的方法——但不确定你是否想走这条路。见这里:stackoverflow.com/questions/2070985/…
    【解决方案2】:

    旧 Excel 文件的最后一行应该有一个字符串,指定创建它的 Excel 版本。我忘记了那些真正古老的确切措辞,但对于 Excel 2003,它是“Microsoft Excel 2003 工作表”

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多