Perl 如何创建文本文件,以便在Excel中打开时将行分组在一起?
我正在通过Perl脚本收集一些数据。数据需要由其他人使用Excel进行审查和处理。目前,我正在将数据写入以制表符分隔的文本文件,Excel可以很好地打开它 然而,数据有一个层次结构,审查者更容易看到一个树而不是一个简单的列表。也就是说,不是以列的形式显示数据Perl 如何创建文本文件,以便在Excel中打开时将行分组在一起?,perl,excel,import,grouping,hierarchy,Perl,Excel,Import,Grouping,Hierarchy,我正在通过Perl脚本收集一些数据。数据需要由其他人使用Excel进行审查和处理。目前,我正在将数据写入以制表符分隔的文本文件,Excel可以很好地打开它 然而,数据有一个层次结构,审查者更容易看到一个树而不是一个简单的列表。也就是说,不是以列的形式显示数据 foo foo1 foo foo2 foo foo3 bar bar1 bar bar2 ... 将其显示为单击展开树: foo foo1 foo2 foo3 bar bar1
foo foo1
foo foo2
foo foo3
bar bar1
bar bar2
...
将其显示为单击展开树:
foo
foo1
foo2
foo3
bar
bar1
bar2
...
Excel的组函数(2007年在“数据>大纲>组”下找到)非常适合此演示文稿,比透视表更易于操作
对于我们来说,从这个简单的列列表到这个分组列表,最简单的方法是什么?理想情况下,我可以以文本形式写出数据,Excel将在导入数据时自动应用分组。或者,如果在导入数据后,审阅者可以应用少量步骤,例如应用宏或模板,也可以
最新版本的Excel(我们这里使用的是2003)可以使用XML格式xlsx。xlsx文件是XML文件的zip文件。如果要创建将在Excel中以所需设置打开的文件,请尝试以下操作:首先创建具有所需分组的模板文件。另存为xlsx。使用标准zip软件解压缩文件。看看里面是什么。我没有专门研究过分组,但是电子表格中的所有命令都是xml格式的,您需要弄清楚分组是在哪里设置的。然后就是对xml进行适当的更改并重新压缩。这需要一点努力,但您可以使用此方法以编程方式创建预先分组的文件。可能有专门针对这一点的Perl库,我不知道。CSV文件也很容易生成。OpenOffice允许您选择如何解析内容,但excel不包括逗号分隔的列(不带任何引号)和CRLF分隔的行
A1,A2,A3
B1,B2,B3
等等。既然您已经在使用perl,我建议您直接使用perl创建excel文件,使用优秀的CPAN模块,该模块支持 工作原理如下:
.
.
$worksheet->write('A2', 'foo');
$worksheet->write('B3', 'foo1');
$worksheet->write('B4', 'foo2');
$worksheet->write('B5', 'foo3');
$worksheet->set_row(2, undef, undef, 0, 1, 1);
$worksheet->set_row(3, undef, undef, 0, 2);
$worksheet->set_row(4, undef, undef, 0, 2);
$worksheet->set_row(5, undef, undef, 0, 2);
.
.
这对我创建树有什么帮助?我不想删除重复的行。这方面的文档有点单薄,但示例很好,很容易理解。这里的文档很好:现在我只需要看看是否可以安装这个模块。我在解压缩的文件中翻了翻。破译存储格式并对其进行黑客攻击的任务相当艰巨。