Ошибка C # с ExcelDataReader - PullRequest
       15

Ошибка C # с ExcelDataReader

0 голосов
/ 28 июня 2018

Недавно я пытался создать приложение, которое может читать файлы 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];
    }
}
}

1 Ответ

0 голосов
/ 02 июля 2018

Код вызывает ExcelReaderFactory.CreateBinaryReader для формата XLS.

Вместо этого измените на ExcelReaderFactory.CreateOpenXmlReader специально для формата XLSX или используйте ExcelReaderFactory.CreateReader для автоматического определения форматов XLS или XLSX прозрачно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...