【问题标题】:Best way reading from dirty excel sheets从脏 excel 表中读取的最佳方法
【发布时间】:2011-01-29 15:40:06
【问题描述】:

我必须使用 C# 操作一些 Excel 文档。这是一个没有用户交互的批处理过程。它将数据解析到数据库中,然后输出漂亮的报告。数据非常脏,无法使用 ADO 准备好。数据远不是一个很好的表格格式。

Best 被定义为最稳定(更新不太可能中断)/清晰(简洁)的代码。快不重要。如果它在不到 8 小时内运行,我很好。

我有逻辑可以找到计算出来的数据。我需要让它运行的只是基本的单元格导航和 getvalue 类型的函数。给我 X 单元格值作为字符串,如果它与 levenshtein 距离

我的问题是,挖掘 excel 的最佳方法是什么?

VSTO? Excel对象库? 第三个选项我不知道?

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    【讨论】:

    • 这就是为什么我要确保我详细说明数据不是任何可以轻松转换为表格的数据格式...
    • @Ten Ton Gorilla -事情总是有一个选项。如果你看看那里的答案,你可能会说服自己。选择最好的是你的兴趣。根据我的经验,我用过非常大的电信 Excel 表的代码。它工作正常,完全没有问题。
    【解决方案2】:

    Office 程序可以作为 .NET 中的对象加载。以下是我用来将 Excel 加载到 VB6 中的编码存根。无论您使用哪种 MS 语言,代码基本上都是相同的。

    Dim xlApp As New Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    
    On Error Resume Next
    wb = xlApp.Workbooks.Open("c:\testdata.xls")
    If Err.Number > 0 Then
        If Err.Number = 1004 Then
            MsgBox("File not found")
        Else
            MsgBox("Error " & Err.Number & " occurred.")
        End If
        Exit Sub
    End If
    
    ws = wb.Sheets("Sheet1")
    Text1.Text = ws.Cells(1, 1).Value
    
    wb = Nothing
    ws = Nothing
    xlApp = Nothing
    

    【讨论】:

      【解决方案3】:

      VSTO 有点痛苦,因为权限和您的 dll 与您正在使用的文档挂钩的事实。假设您实际上并没有更改文件,并且 ADO 绝对不是一个选项,我会说通过 Excel COM 接口实现自动化是您最好的选择。它让您可以像通常对任何其他应用程序一样进行编程,并为您提供与 VSTO 一样多的数据提取选项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-12
        • 1970-01-01
        • 2017-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多