C#错误与ExcelDataReader
C# error With ExcelDataReader
最近我正在尝试构建一个可以读取 excel 文件的应用程序。但是就在我 select excel 文件之后,我收到一条错误消息:
'ExcelDataReader.Exceptions.HeaderException' occurred in
ExcelDataReader.dll
Additional information: Invalid file signature."
The error is caught on line 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];
}
}
}
代码调用 ExcelReaderFactory.CreateBinaryReader
用于 XLS 格式。
相反,更改为专门针对 XLSX 格式使用 ExcelReaderFactory.CreateOpenXmlReader
,或者使用 ExcelReaderFactory.CreateReader
透明地自动检测 XLS 或 XLSX 格式。
您的文件格式不正确。
在 Microsoft Office 中打开您的文件,然后再次以“.xls”格式“另存为”并使用这个新文件。
最近我正在尝试构建一个可以读取 excel 文件的应用程序。但是就在我 select excel 文件之后,我收到一条错误消息:
'ExcelDataReader.Exceptions.HeaderException' occurred in ExcelDataReader.dll
Additional information: Invalid file signature."
The error is caught on line 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];
}
}
}
代码调用 ExcelReaderFactory.CreateBinaryReader
用于 XLS 格式。
相反,更改为专门针对 XLSX 格式使用 ExcelReaderFactory.CreateOpenXmlReader
,或者使用 ExcelReaderFactory.CreateReader
透明地自动检测 XLS 或 XLSX 格式。
您的文件格式不正确。 在 Microsoft Office 中打开您的文件,然后再次以“.xls”格式“另存为”并使用这个新文件。