如何创build一个文本文件,以便在Excel中打开时,行被分组在一起?

我正在通过Perl脚本收集一些数据。 这些数据需要使用Excel进行审查和处理。 目前,我正在将数据写成制表符分隔的文本文件,而Excel可以打开这个很好。

然而,数据有一个层次结构,审阅者可以更容易看到一棵树,而不是一个扁平的列表。 也就是说,不是以列的forms呈现数据,

foo foo1 foo foo2 foo foo3 bar bar1 bar bar2 ... 

将其呈现为点击展开树:

 foo foo1 foo2 foo3 bar bar1 bar2 ... 

Excel的组function(2007年发现在“数据>大纲>组”)是一个很好的匹配这个演示文稿,比透视表操作有点简单。

我们从这个平面列表到这个分组列表最简单的方法是什么? 理想情况下,我可以用文本forms写出数据,Excel将在导入时自动应用分组。 或者,如果审查人员在导入数据后可以应用一些步骤,例如应用macros或模板,那也可以。

由于您已经在使用perl,我build议您使用优秀的CPAN模块Spreadsheet :: WriteExcel支持Excel轮廓,直接在perl中创buildexcel文件。

像这样工作:

  . . $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); . . 
  1. select要过滤的列表中的所有行,包括列标题。

    ShowTip单击范围的左上angular的单元格,然后拖到右下angular的单元格。

  2. 在数据菜单上,指向筛选,然后单击高级筛选。
  3. 在“高级筛选器”对话框中,单击“筛选列表”。
  4. select唯一loggingcheckbox,然后单击确定。

    显示过滤的列表,重复的行被隐藏。

  5. 在编辑菜单上,单击Office剪贴板。

    显示剪贴板任务窗格。

  6. 确保已筛选的列表仍处于选中状态,然后单击Copy Copybutton。

    被过滤的列表用突出轮廓突出显示,并且select作为剪贴板顶部的项目出现。

  7. 在数据菜单上,指向筛选,然后单击全部显示。

    原始列表重新显示。

  8. 按下DELETE键。

    原始列表被删除。

  9. 在剪贴板中,点击已过滤的列表项目。

    已过滤的列表与原始列表显示在相同的位置。

最新版本的Excel(我们在这里使用的是2003)可以使用XML格式xlsx。 xlsx文件是XML文件的zip文件。 如果你想创build一个文件,在Excel中打开你想要的设置,试试这个:首先用你想要的分组创build一个模板文件。 将其保存为xlsx。 使用您的标准压缩软件解压缩文件。 看看里面是什么。 我没有专门的分组工作,但电子表格中的所有命令将以xml格式存在,您需要确定分组的设置位置。 然后是对xml进行适当更改并重新压缩的问题。 一点努力,但是你可以使用这种方法来编程创build预分组文件。 可能有Perl库专门针对这个,我不知道。

一个CSV文件也很容易生成。 OpenOffice让你select如何parsing的东西,但除了逗号分隔的列(没有任何引用)和CRLF分隔的行之外的Excel。

 A1,A2,A3 B1,B2,B3 

等等