首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExcelDataReader更改列名

ExcelDataReader更改列名
EN

Stack Overflow用户
提问于 2021-02-23 05:47:05
回答 1查看 168关注 0票数 1

我正在使用ExcelDataReader读取Excel文件

代码语言:javascript
复制
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等。

如何获取真实名称,或者如何防止更改它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 20:45:40

这种行为的原因是,如果您尝试设置重复的列名,DataSet的实现将抛出DuplicateNameException 1。ExcelDataReader通过为您生成唯一的列名来解决此问题。

您需要根据您的情况找到一种解决方法。F.ex将UseHeaderRow设置为false,并从数据中手动读取列名。或者根本不使用AsDataSet(),而是依赖于阅读器的Read()/GetValue()/GetXXX()方法。

1

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

https://stackoverflow.com/questions/66323922

复制
相关文章

相似问题

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