【发布时间】:2013-06-22 05:06:51
【问题描述】:
我被以下要求卡住了。
我有两个 excel(xls) 文件(新旧用户列表)。在每个文件中有 4 个字段“用户 ID”、“用户名”、“成本中心”、“审批经理”。现在,我需要检查新用户列表中的每个用户 ID 是否存在于旧用户列表中。如果是,我必须复制/将新用户列表中“成本中心”和“审批经理”的值替换为旧用户列表中相同列的值。如果此条件失败,则突出显示新用户列表中“userid”的整行,旧用户列表中没有相应的匹配记录,最后不是最后但至少我们必须保存新用户列表。大约有2000+个用户ID
下面,我开始编写代码以将用户 ID 列表从新用户列表中获取到一个数组中。将对旧用户列表执行相同的操作。从那里开始,我该如何修改新用户列表,就像我上面解释的那样?
$objExcel = new-object -comobject excel.application
$UserWorkBook = $objExcel.Workbooks.Open("O:\UserCert\New_Users.xls")
$UserWorksheet = $UserWorkBook.Worksheets.Item(1)
$OldUsers = @()
$intRow = 2 #starting from 2 since i have to exclude the header
do {
$OldUsers = $UserWorksheet.Cells.Item($intRow, 1).Value()
$intRow++
} while ($UserWorksheet.Cells.Item($intRow,1).Value() -ne $null)
任何帮助非常感谢...
【问题讨论】:
-
我不会弄乱 Excel COM 接口,而是将文件保存为 CSV 格式。在 Powershell 中处理 CSV 轻而易举,看看
Import-CSV。 -
不过,您仍然可以使用 Excel COM 对象将文件保存为 CSV 格式。
标签: excel powershell