【问题标题】:Import Text file data to Excel将文本文件数据导入 Excel
【发布时间】:2016-01-05 10:29:14
【问题描述】:

我有一个包含以下数据的文本文件:

1,姓名1,年龄1,城市1
2,姓名2,年龄2,城市2
3,姓名3,年龄3,城市3

我希望将其导入 Excel 文件,例如,起始单元格将是“B1”。

我有一个脚本,它只能更新 Excel 文件中的单个单元格,但如果它是一些用逗号分隔的文本,我不知道什么是正确的方法。

编辑:我忘记了我有一个使用 VB 的工作代码,但我需要帮助才能将其转换为 Powershell。

Dim objExcel As object
Dim objSheet As object
Dim worksheet As string
Dim txt as string
Dim connectionName as string

worksheet = "Sheet1"
txt = "c:\test.txt"
objExcel =  New Excel.Application
Dim objWB As Excel.Workbooks = objExcel.Workbooks
objWB.Open("c:\excelfile.xlsx",IgnoreReadOnlyRecommended:=True)
objSheet = objExcel.ActiveWorkbook.Worksheets(worksheet)
connectionName = "TEXT;" + txt
With objSheet.QueryTables.Add(Connection:=connectionName, Destination:=objSheet.Range("B1"))
        .Name = txt
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = 0 'xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = 1 'xlDelimited
        .TextFileTextQualifier = 1 'xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .Refresh (BackgroundQuery:=False)
    End With

objExcel.DisplayAlerts = False
objExcel.ActiveWorkbook.Save()
objExcel.ActiveWorkbook.Close()

System.Runtime.InteropServices.Marshal.FinalReleaseComObject (objWB)
objExcel.quit()
System.Runtime.InteropServices.Marshal.FinalReleaseComObject (objExcel)
objWB = Nothing
objExcel = Nothing
System.Threading.Thread.Sleep (2000)
GC.Collect()

【问题讨论】:

  • 首先将所需的操作记录为宏,然后将translate 宏记录到 PowerShell。当您对无法上班的事情有具体问题时请回来。就目前而言,您的问题过于宽泛,因为您现有的代码与您要解决的问题无关。
  • 我已经向您推荐了博客文章,其中概述了将 VBA 转换为 PowerShell 时要注意的事项。您需要帮助解决什么特殊问题?

标签: excel powershell


【解决方案1】:

如果是一些用逗号分隔的文本,我不知道什么是正确的方法。

这种文本文件格式通常称为CSVComma-S分隔的Values) .

幸运的是,PowerShell 附带了一系列 CSV 解析工具,包括 Import-CSV

$Lines = Import-Csv C:\my\textfile.txt -Header 'ID','Name','Age','City'

现在,$Lines 是一个对象数组,表示文本文件中的每一行。每个对象都有名为IDNameAgeCity 的属性,您可以使用它们来获取不同的值:

foreach($Line in $Lines)
{
    '{0} from {1} is {2} years old' -f $Line.Name,$Line.City,$Line.Age
}

现在您需要做的就是用for 循环替换foreach 循环并开始填充您的Excel 工作表!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多