Home > Net >  PowerShell: How to upload data from multiple txt files into a single xlsx or csv file
PowerShell: How to upload data from multiple txt files into a single xlsx or csv file

Time:07-27

PowerShell: How to upload data from multiple txt files into a single xlsx or csv file using Windows PowerShell

I would like to be able to use a loop that will iterate through a folder of many txt files and upload all of the data from them into a single xlsx or csv file.

The txt files are tab delimited with a few columns and include column headers. I only want the headers to upload to the new file once so it shows up at the top but never again.

I found the following code on another site that allows me to upload multiple files into a single one and only uploads the header once. The issue is that the data does not format correctly as the rows are put into a single cell when I need each point to be split up.

$getFirstLine = $true

get-childItem "YOUR_DIRECTORY\*.txt" | foreach {
$filePath = $_

$lines =  $lines = Get-Content $filePath  
$linesToWrite = switch($getFirstLine) {
       $true  {$lines}
       $false {$lines | Select -Skip 1}

}

$getFirstLine = $false
Add-Content "YOUR_DESTINATION_FILE" $linesToWrite
}

This image is an example of the txt data with the first row being the column headers: txt file data that I am trying to upload into a csv or xlsx

CodePudding user response:

If you're certain the text files all have the same format, you can treat them as tab-delimited csv files, import them and save out merged like below:

(Get-ChildItem -Path 'X:\Somewhere' -Filter '*.txt' -File).FullName | 
Import-Csv -Delimiter "`t" | 
Export-Csv 'X:\SomewhereElse\merged.csv' -UseCulture -NoTypeInformation

Using switch -UseCulture means the merged csv is written out using the delimiter your local Excel expects, so when done just double-click the file to open in Excel.

  • Related