【问题标题】:C# error With ExcelDataReaderExcelDataReader 出现 C# 错误
【发布时间】:2018-06-28 09:45:10
【问题描述】:

最近我正在尝试构建一个可以读取 excel 文件的应用程序。但就在我选择 excel 文件后,我收到一条错误消息:

“ExcelDataReader.Exceptions.HeaderException”发生在 ExcelDataReader.dll

附加信息:无效的文件签名。”

错误在第 38 行被捕获

这是我的代码的副本

using ExcelDataReader;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Alt_jde
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void label1_Click(object sender, EventArgs e)
    {

    }
    DataSet result;
    private void btnOpen_Click(object sender, EventArgs e)
    {
        using(OpenFileDialog ofd = new OpenFileDialog() )
        {
            if (ofd.ShowDialog()==DialogResult.OK)
            {
                System.IO.FileStream fs = System.IO.File.Open(ofd.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                IExcelDataReader reader = ExcelReaderFactory.CreateBinaryReader(fs);   // ERROR HERE
                var result = reader.AsDataSet(new ExcelDataSetConfiguration()
                {
                    ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                    {
                        UseHeaderRow = true
                    }
                });
                cbosheet.Items.Clear();
                foreach (DataTable dt in result.Tables)
                    cbosheet.Items.Add(dt.TableName);
                reader.Close();
                    }
        }
    }

    private void cbosheet_SelectedIndexChanged(object sender, EventArgs e)
    {
        dataGridView.DataSource = result.Tables[cbosheet.SelectedIndex];
    }
}
}

【问题讨论】:

  • 您确定您在 xls/xlsx/csv 文件中使用的文件吗?
  • 是的,我是@AlexK。这是一个 xlsx 文件

标签: c# excel exceldatareader


【解决方案1】:

代码调用ExcelReaderFactory.CreateBinaryReader,用于XLS格式。

改为使用 ExcelReaderFactory.CreateOpenXmlReader 专门用于 XLSX 格式,或使用 ExcelReaderFactory.CreateReader 透明地自动检测 XLS 或 XLSX 格式。

【讨论】:

    【解决方案2】:

    您的文件格式不正确。 在 Microsoft Office 中打开您的文件,然后以“.xls”格式再次“另存为”并使用这个新文件。

    【讨论】:

    • 这个答案与OP的要求无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2014-01-31
    相关资源
    最近更新 更多