Excel 文件、C 和苦难

Posted

技术标签:

【中文标题】Excel 文件、C 和苦难【英文标题】:Excel Files, C, and misery 【发布时间】: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" 可能会有所帮助。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

您也可以使用VLOOKUP() 函数来做到这一点。【参考方案3】:
    安装GnuWin32 将 excel 文件输出为文本(例如 csv) sort 每个文件都带有-u 选项,以便在需要时删除重复项 混合和sort 2 个文件 计算具有uniq -c 的唯一ID 过滤掉计数值为 1 的行,计数为 grep 使用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 快速拼凑一些东西。

过去它对我很有用。

【讨论】:

以上是关于Excel 文件、C 和苦难的主要内容,如果未能解决你的问题,请参考以下文章

吃苦要趁早

逃避苦难

如此“苦难之地”,不宜久留

分析机风云:超前时代五十载,是非曲直苦难辩

同学留步,我想跟你聊聊成长中的苦难

同学留步,我想跟你聊聊成长中的苦难