我正在使用ExcelDataReader读取Excel文件
Dim entireExcel As DataTableCollection
Using ofd As OpenFileDialog = New OpenFileDialog() With {.Filter = "Excel Workbook|*.xlsx|Excel 97-2003 Workbook|*.xls"}
If ofd.ShowDialog() = DialogResult.OK Then
txtFileName.Text = ofd.FileName
Using stream = File.OpenRead(ofd.FileName)
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
Dim reader As IExcelDataReader = ExcelReaderFactory.CreateReader(stream)
entireExcel = reader.AsDataSet(New ExcelDataSetConfiguration() With {
.ConfigureDataTable = Function(__) New ExcelDataTableConfiguration() With {
.UseHeaderRow = True}}).Tables
End Using
End If
End Using这一切都很好,只有一个例外:工作表中的列名不是Excel中的真实列名。如果该列与左侧的列重复,则会在名称中添加_1、_2等。如果缺少列名,它将创建一个名称Column0、Column1、Column2等。
如何获取真实名称,或者如何防止更改它们?
发布于 2021-02-23 20:45:40
这种行为的原因是,如果您尝试设置重复的列名,DataSet的实现将抛出DuplicateNameException 1。ExcelDataReader通过为您生成唯一的列名来解决此问题。
您需要根据您的情况找到一种解决方法。F.ex将UseHeaderRow设置为false,并从数据中手动读取列名。或者根本不使用AsDataSet(),而是依赖于阅读器的Read()/GetValue()/GetXXX()方法。
https://stackoverflow.com/questions/66323922
复制相似问题