【问题标题】:Excel Files, C, and miseryExcel 文件、C 和苦难
【发布时间】:2011-09-01 22:18:45
【问题描述】:

好吧,所以,我已经很久没有编程过任何有用的东西了 - 上次我这样做是在一年前,你可以想象我的编程知识已经严重生锈了。 (我“编程”的最后一件事是周末的 ren'py 游戏。可以想象它的有限用途。我写的最先进的 C 程序是一年前的井字游戏。所以是的。)

无论如何,我得到了一份工作来编写一个程序,该程序需要两个 Excel 文件,这两个文件都有一个项目列表,每个项目都与一个 ID 相关联。我需要编写一个程序来搜索两个文件的 ID,如果 ID 匹配,程序将需要创建一个具有匹配 ID 和项目的新文件。这超出了我有限的 C 语言能力。

如果有人能提供帮助,我将不胜感激。

(另外,如果 C 无法做到这一点,我会尽力使用任何其他语言)

【问题讨论】:

  • 如果文件是 CSV 文件,我在code.google.com/p/csvfix 的 FOSS 工具 CSVfix 将完全按照您的要求完成,无需编程。
  • C 不是一种实用的语言,可用于系统编程之上的所有内容。如果脚本和游戏开发是您的主要兴趣领域,那么使用其他语言会更好。
  • 是xlsx还是xls文件(xlsx是xml数据,xls是二进制数据)?
  • 用 C 肯定是可能的。我自己使用 C 已经好几年了,所以我不打算尝试如何去做。但是,我会说 C 不是解决这个问题的首选语言。我会看一种具有更好类型安全性和内置内存管理/垃圾收集的高级语言。我会选择 C#、VB.NET 或 Java 之类的东西。
  • 为什么不直接在 Excel 中执行此操作?听起来不需要外部工具。 Google search for "excel inner join" 可能会有所帮助。

标签: c excel programming-languages file merge


【解决方案1】:

将这两个文件导出为 .csv 格式并编写一个脚本来处理这两个文件。例如,在 PHP 中,您已经内置了 csv 读/写功能。

【讨论】:

    【解决方案2】:

    您可以在其中一个文件中使用VBA and create a Macro 执行此操作,该文件遍历文件 1 中列中的单元格,并将它们与文件 2 中的单元格进行比较,如果匹配,则将它们写入新的 .xls 文件。

    Dana 指出VLOOKUP function 会很容易做到这一点。

    【讨论】:

    • 您也可以使用VLOOKUP() 函数来做到这一点。
    【解决方案3】:
    1. 安装GnuWin32
    2. 将 excel 文件输出为文本(例如 csv)
    3. sort 每个文件都带有-u 选项,以便在需要时删除重复项
    4. 混合和sort 2 个文件
    5. 计算具有uniq -c 的唯一ID
    6. 过滤掉计数值为 1 的行,计数为 grep
    7. 使用cut 删除留下 ID 的计数以及您需要的任何其他内容

    【讨论】:

      【解决方案4】:

      如果您了解 Java,那么您可以将 Apache POI 用于您的项目。您可以使用 Apache POI 网站上提供的示例来完成您的任务。

      Apache POI Excel 文档:http://poi.apache.org/spreadsheet/quick-guide.html

      【讨论】:

        【解决方案5】:

        如果您绝对必须对来自进程的 xls/xlsx 文件执行此操作,您可能需要一份由 COM 自动化控制的 Excel 副本。您可以在 BV/VBA/C#/C++ 中执行此操作,有些比其他更容易。谷歌的“Excel 自动化”。

        Rgds, 马丁

        【讨论】:

          【解决方案6】:

          不是 C,但您可以使用 xlsperl 快速拼凑一些东西。

          过去它对我很有用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-03
            • 1970-01-01
            • 1970-01-01
            • 2021-10-22
            相关资源
            最近更新 更多