You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动将多个文本文件内容导入同一Excel文件的对应工作表

解决方案

你可以通过配置「输入文件-工作表名」的映射关系,循环遍历处理所有文件,就能实现自动将多个压缩文本文件内容写入同一Excel的不同工作表,无需每次手动修改文件名和工作表配置。

修改后的完整脚本如下:

use strict;
use warnings;
use Excel::Writer::XLSX;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);

{
    my $output_fn = 'result.xlsx';
    # 在此处配置需要处理的文件和对应工作表名,新增/删除文件仅需修改此处
    my %file_sheet_map = (
        'accuracy_final_copy.txt.gz' => 'Accuracy',
        'textfile1.txt.gz' => 'Sheet1',
        'textfile2.txt.gz' => 'Sheet2',
        # 继续添加更多文件和对应的工作表名即可
    );
    my $workbook = Excel::Writer::XLSX->new( $output_fn ) or die "创建Excel文件失败: $!";

    # 遍历所有配置的文件依次处理
    while (my ($input_fn, $sheet_name) = each %file_sheet_map) {
        my $worksheet = $workbook->add_worksheet($sheet_name);
        my $zip = IO::Uncompress::Gunzip->new( $input_fn )
          or die "解压$input_fn失败: $GunzipError\n";
 
        # 可根据不同工作表自定义表头,这里保留你原来的写法,也可以单独配置
        $worksheet->write( 0, 0,  "$sheet_name 对应值" );

        my $col = 0;
        my $row = 1;
        while (!$zip->eof()) {
            my $line = $zip->getline();
            chomp($line);
            next if $line !~ /\S/;  # 跳过空行
            $worksheet->write( $row, $col, $line );
            $row++;
        }
        $zip->close();
    }

    $workbook->close();
}

核心调整说明

  • 新增%file_sheet_map配置项,所有需要处理的文件和对应的工作表名称只需在此处配置即可,后续调整处理范围不需要修改业务逻辑
  • 保留了你原有的解压、读取文本行、跳过空行、写入Excel的逻辑,兼容你原来的使用习惯
  • 若需要工作表按照指定顺序排列,可将哈希配置替换为有序数组存储映射关系,遍历数组即可保证生成的工作表顺序和配置顺序完全一致
  • 如果你的文件和工作表名有固定规律(比如按数字序号排序),还可以进一步简化配置,直接通过循环生成文件名和工作表名,不需要手动逐个配置映射关系

内容的提问来源于stack exchange,提问作者Basil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:15:05