Я пытаюсь автоматизировать следующую задачу, выполняемую вручную, и борюсь с ее частью:
1) Откройте текстовый файл, содержащий несколько строк с данными.
2) Скопируйте содержимое этого файла в буфер обмена.
3) Откройте электронную таблицу и таблицу Excel.
4) Переименуйте электронную таблицу в Test.
5) Вставьте содержимое буфера обмена.
Когда это делается вручную, содержимое вставляется, и каждая строка в текстовом файле вставляется как новая строка в столбце A.
Изначально клиент хотел, чтобы все содержимое файла было введено в клетку A1. Я смог добиться этого с помощью приведенного ниже кода PowerShell.
Однако с тех пор они изменили это значение на то, что каждая строка текста должна go выделяться в отдельную строку в столбце A.
I не могу понять, как сделать это изящно с помощью метода Get-Content, копируя текстовые данные. Я видел обходные пути к этой проблеме, когда Excel открывает текстовый файл и копирует текст в промежуточную рабочую книгу, а затем в окончательную рабочую книгу.
Может кто-нибудь сообщить мне, если возможно изменить мой уже работающий код ниже чтобы он добавлял текст в строки в столбце A, а не в ячейку A1?
# Clear the screen of any previous text.
cls
$ExcelFile="C:\Users\User\Desktop\Test\Test.xlsx"
$TextFile="C:\Users\User\Desktop\Test\TestText.txt"
$Content = Get-Content $TextFile -Raw
# Perform operations in Excel based on content of the downloaded file.
$Excel = New-Object -ComObject Excel.Application
# For troubleshooting enable the below to view Excel as file is manipulated:
#$Excel.Visible=$true
# Disable Excel alerts. Hash this line out for troubleshooting.
$Excel.DisplayAlerts = $false
# Set up workbook...
$Workbook = $Excel.Workbooks.Add()
$Data = $Workbook.Worksheets.Item(1)
$Data.Name = 'Test'
# Insert Data
$Data.Cells.Item(1,1) = "$Content"
# Format, save and quit excel
$UsedRange = $Data.UsedRange
$UsedRange.EntireColumn.AutoFit() | Out-Null
$Workbook.SaveAs("$ExcelFile")
$Excel.Quit()
Я знаю, что часть, которую мне нужно изменить, выглядит следующим образом, но я не уверен, что нужно изменить до:
# Insert Data
$Data.Cells.Item(1,1) = "$Content"
Большое спасибо заранее.