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 和苦难的主要内容,如果未能解决你的问题,请参考以下文章