【发布时间】: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