首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#误差与ExcelDataReader

C#误差与ExcelDataReader
EN

Stack Overflow用户
提问于 2018-06-28 09:45:10
回答 2查看 20.4K关注 0票数 12

最近,我试图建立一个应用程序,可以读取excel文件。但是,就在我选择了excel文件之后,我得到了一个错误:

“ExcelDataReader.Exceptions.HeaderException”发生在ExcelDataReader.dll中 附加信息:无效的文件签名。“ 该错误在第38行中被捕获。

这是我的代码副本

代码语言:javascript
复制
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];
    }
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-02 13:58:45

代码调用ExcelReaderFactory.CreateBinaryReader,这是XLS格式的。

相反,更改为对XLSX格式使用ExcelReaderFactory.CreateOpenXmlReader,或者使用ExcelReaderFactory.CreateReader透明地自动检测XLS或XLSX格式。

票数 26
EN

Stack Overflow用户

发布于 2021-08-30 07:21:36

您的文件格式不正确。以Microsoft格式打开文件,并以“.xls”格式再次“另存为”,并使用此新文件。

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

https://stackoverflow.com/questions/51079664

复制
相关文章

相似问题

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