【发布时间】:2011-02-06 23:18:28
【问题描述】:
系统 OSX 或 Linux
我正在尝试自动化我的工作流程,每周我都会收到一个 excel 文件,然后将其转换为 csv。
一个例子是:
,,L1,,,L2,,,L3,,,L4,,,L5,,,L6,,,L7,,,L8,,,L9,,,L10,,,L11,
Title,r/t,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,neede d,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst
EXAMPLEfoo,60,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
EXAMPLEbar,30,6,6,12,6,7,14,6,6,12,6,6,12,6,8,16,6,7,14,6,7.5,15,6,6,12,6,8,16,6,0,0,6,7,14
EXAMPLE1,60,3,3,3,3,5,5,3,4,4,3,3,3,3,6,6,3,4,4,3,3,3,3,4,4,3,8,8,3,0,0,3,4,4
EXAMPLE2,120,6,6,3,0,0,0,6,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
EXAMPLE3,60,6,6,6,6,8,8,6,6,6,6,6,6,0,0,0,0,0,0,6,8,8,6,6,6,0,0,0,0,0,0,0,10,10
EXAMPLE4,30,6,6,12,6,7,14,6,6,12,6,6,12,3,5.5,11,6,7.5,15,6,6,12,6,0,0,6,9,18,6,0,0,6,6.5,13
我需要做的是为第 1 行中的每个实例创建多个 csv 文件,因此 L1、L2、L3、L4...
在每个 csv 文件中,它需要包含标题,r/t,需要
因此对于 L1,输出示例如下所示:
EXAMPLEfoo,60,6
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,6
EXAMPLE3,60,6
EXAMPLE4,30,6
对于 L2:
EXAMPLEfoo,60,0
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,0
EXAMPLE3,60,6
EXAMPLE4,30,6
等等。
我尝试过使用 sed 和 awk 并点击 google,但我没有找到任何真正解决问题的方法。
我想 perl 会特别适合这个或 python,所以我很乐意接受用户的建议。
那么,有什么建议吗?
提前致谢。
【问题讨论】:
-
您收到了哪些类型的 Excel 文件——2003 年、2007 年,其他?
-
2007 在 mac 上,我已经搜索了尝试使用 automator 执行此操作的方法,它是 excel 挂钩,但没有骰子。理想情况下,我希望能够从 bash 脚本运行它,这解释了我对 sed 和 awk 的实验。
-
看看我的 FOSS 项目code.google.com/p/csvfix,它是一个可以做这类事情的工具。
-
鉴于各种L的覆盖多列,你如何确定选择哪一个?
-
嗨,第一行的条目数是常数吗? L1 是唯一一个错过 Inst 列的吗?