如何将文本文件中的数据导入到Excel中?

我有多个文件夹。 这些文件夹中有多个txt文件。 我需要从这个文件夹中的特定types的txt文件提取数据(只是一个值:值—> 554)。( individual_values.txt

 No 100 Value 555 level match 0.443 top level 0.443 bottom 4343 

将有许多文件夹具有相同的txt文件名称,但差异值。 所有这些值都可以被复制到一个在另一个之下。

我必须从上面提到的txt文件中提取一个值。 它是一个相同的文件名称相同的文件位于不同的文件夹。 我想要做的就是从所有的文本文件中提取这个值,并将其粘贴到每行下方的excel或txt中。

例如:上面是一个文本文件,我必须得到555的值,并从其他差异值类似。

 555 666 666 776 

是。

(你可能想澄清你的问题)

你的问题不是很清楚,我想你想知道如何做到这一点。

您可能需要编写遍历文件夹的脚本,读取单个文件,parsing它们以获取所需的值,并生成逗号分隔值 (CSV)文件。 CSV文件可以很容易地导入到Excel中。

您可以使用两种或三种基本方法将内容获取到Excel电子表格中。

  • 您可以使用OLE包装来操作Excel。
  • 您可以用二进制forms写入文件
  • 您可以使用Excel的导入方法将分隔文本作为电子表格。

我select了后一种方式,因为1)它是最简单的,2)你的问题陈述得不好,因为它不需要更复杂的方法。 下面的解决scheme输出Excel轻松支持的制表符分隔的文本文件。

在Perl中:

 use IO::File; my @field_names = split m|/|, 'No/Value/level match/top level/bottom'; #' # <-- catch runaway quote my $input = IO::File->new( '<data.txt' ); die 'Could not open data.txt for input!' unless $input; my @data_rows; while ( my $line = <$input> ) { my %fields = $line =~ /(level match|top level|bottom|Value|No)\s+(\d+\S*)/g; push @data_rows, \%fields if exists $fields{Value}; } $input->close(); my $tab_file = IO::File->new( '>data.tab' ); die 'Could not open data.tab for output!' unless $tab_file; $tab_file->print( join( "\t", @field_names ), "\n" ); foreach my $data_ref ( @data ) { $tab_file->print( join( "\t", @$data_ref{@field_names} ), "\n" ); } $tab_file->close(); 

注意: Excel的文本处理真的很整齐。 尝试打开下面的文本(用实际的标签replace\t ) – 甚至复制并粘贴:

1\t2\t3\t=SUM(A1:C1)

我select了C#,因为我认为使用recursionlambda会很有趣。 这将创build包含与正则expression式模式匹配的csv文件。

  string root_path = @"c:\Temp\test"; string match_filename = "test.txt"; Func<string,string,StringBuilder, StringBuilder> getdata = null; getdata = (path,filename,content) => { Directory.GetFiles(path) .Where(f=> Path.GetFileName(f) .Equals(filename,StringComparison.OrdinalIgnoreCase)) .Select(f=>File.ReadAllText(f)) .Select(c=> Regex.Match(c, @"value[\s\t]*(\d+)", RegexOptions.IgnoreCase)) .Where(m=>m.Success) .Select(m=>m.Groups[1].Value) .ToList() .ForEach(m=>content.AppendLine(m)); Directory.GetDirectories(path) .ToList() .ForEach(d=>getdata(d,filename,content)); return content; }; File.WriteAllText( Path.Combine(root_path, "data.csv"), getdata(root_path, match_filename, new StringBuilder()).ToString()); 

没有。

只要确保你有50/50的机会得到正确的答案

(假设这是一个由Yes和No负责的问题)hehehe

文件未find

得到所有三个二进制状态的响应。