[玩转系统] 如何在 PowerShell 中导入 Excel
作者:精品下载站 日期:2024-12-14 03:45:44 浏览:15 分类:玩电脑
如何在 PowerShell 中导入 Excel
使用 PowerShell 时,我们可以使用 Excel 文件将数据导入系统或将其用作用户的参考列表,例如更新或获取设置。为此,我们将使用 ImportExcel 模块。
尽管我们可以使用 Import-CSV 导入 Excel 数据,但 ImportExcel 模块的优点是您不需要转换 Excel 文件,并且在选择所需数据时有更多选项。
在本文中,我们将了解如何使用 PowerShell 导入 Excel 文件。我们将研究模块的不同功能,并给您一些示例。
在 PowerShell 中导入 Excel
要将 Excel 文件导入 PowerShell,我们首先需要安装 ImportExcel 模块。该模块可在 PowerShell Gallery 中找到,因此我们只需使用 Install-Module
cmdlet 即可安装它。
使用下面的命令来安装模块,请记住,您需要在提升模式(管理模式)下运行 PowerShell 来安装模块,或者您可以使用 scope
参数来安装当前模块仅限用户。
# Install the module for all users
Install-Module -Name ImportExcel
# Install the module for the current user only
Install-Module -Name ImportExcel -Scope CurrentUser
安装模块后,您可以使用 Import-Module
cmdlet 加载该模块。如果您经常使用该模块,那么您还可以将该模块添加到您的 PowerShell 配置文件中,这样当您打开 PowerShell 时它将始终加载。
Import-Module ImportExcel
导入 Excel 文件
ImportExcel 模块附带了一些功能,可帮助您将 Excel 文件导入 PowerShell。对于下面的示例,我将使用以下 Excel 文件,该文件具有多个工作表和一个日期字段:
在了解如何使用 ImportExcel 模块之前,我们首先看一下可用于导入 Excel 文件的参数:
- 路径 - 必填,Excel 文件的位置
- ExcelPackage - 允许您提供 Excel 包对象而不是路径
- WorksheetName - 要导入的 Excel 工作表的名称。
- HeaderName - 指定自定义标题名称,而不是 Excel 文件中的名称
- NoHeader - 导入 Excel 文件而不使用第一行作为标题。
- ImportColumns - 指定要导入的列
- StartRow - 定义开始导入的行,上面的所有行将被忽略
- EndRow - 导入在指定行停止
- StartColumn - 定义从哪一列开始导入
- EndColumn - 从指定列开始导入
- DataOnly - 仅导入包含数据的行和列。空的将被忽略
- AsText - 将指定列导入为文本
- AsDate - 将指定列转换为数据对象
- 密码 - 打开受保护 Excel 文件的密码
将 Excel 文件导入 PowerShell 时,默认情况下仅导入第一个工作表。所有标题、行和列均已导入,但我们可以根据需要进行更改。因此,要简单地重要一个Excel文件,您只需要指定Excel文件的路径:
import-Excel -Path "C:\temp\employeeData.xlsx" | ft
# Results
EmployeeID Name Department Salary HireDate
---------- ---- ---------- ------ --------
101,00 John Doe HR 60000,00 42064,00
102,00 Jane Smith IT 75000,00 42931,00
103,00 Emily Jones Finance 72000,00 43636,00
104,00 Michael Brown Marketing 68000,00 43416,00
105,00 Jessica White IT 79000,00 43840,00
修复日期字段
正如您在上面的结果中看到的,我们的 HireDate 列存在问题。所有内容都以文本形式导入,这使得日期字段毫无用处。您可以通过使用 -AsDate
参数将日期列标记为日期字段来解决此问题:
Import-Excel -Path "C:\temp\employeeData.xlsx" -AsDate "HireDate" | ft
# Results
EmployeeID Name Department Salary HireDate
---------- ---- ---------- ------ --------
101,00 John Doe HR 60000,00 1-3-2015 00:00:00
102,00 Jane Smith IT 75000,00 15-7-2017 00:00:00
103,00 Emily Jones Finance 72000,00 20-6-2019 00:00:00
104,00 Michael Brown Marketing 68000,00 12-11-2018 00:00:00
105,00 Jessica White IT 79000,00 10-1-2020 00:00:00
导入特定工作表
如果您的 Excel 工作簿有多个工作表,并且您想要从另一个工作表而不是第一个工作表导入数据,那么我们可以使用 -WorksheetName 参数指定工作表名称。
要从示例工作表导入 SalesData,我们可以使用以下命令:
Import-Excel -Path "C:\temp\employeeData.xlsx" -WorksheetName "salesdata" | ft
在此示例中,我们知道要导入的工作表名称。但是,如何从命令行知道您的 Excel 文件是否有多个工作表呢?工作表的名称是什么?要找到这一点,我们可以使用 cmdlet Get-ExcelSheetInfo
,它也是 ImportExcel 模块的一部分。
该 cmdlet 仅需要 Excel 文件的路径,并将输出所有工作表、其名称和索引号,以及工作表是否可见或隐藏:
Get-ExcelSheetInfo -Path C:\temp\employeeData.xlsx
# Result
Name Index Hidden Path
---- ----- ------ ----
EmployeeData 1 Visible C:\temp\employeeData.xlsx
SalesData 2 Visible C:\temp\employeeData.xlsx
Summary 3 Visible C:\temp\employeeData.xlsx
在此示例中,每个工作表都有不同的结构,因此我们无法轻松地将它们全部导入到一个对象中。但是,如果您想从 Excel 文件导入每个工作表,您可以简单地使用 ForEach 循环将它们全部导入:
$excelSheets = Get-ExcelSheetInfo -Path "C:\temp\employeeData.xlsx"
$excelSheets | ForEach {
Import-Excel -Path "C:\temp\employeeData.xlsx" -WorksheetName $_.Name | ft
}
导入特定的行和列
有时您只需要 Excel 文件中的部分数据。使用 ImportExcel 模块,您可以指定要导入的内容和不导入的内容。
为此,我们可以使用 cmdlet StartRow
、EndRow
和 StartColumn
、EndColumn
。因此,如果我们只想从 Excel 文件中导入姓名和部门,以及前三个用户,我们可以执行以下操作:
Import-Excel -Path "C:\temp\employeeData.xlsx" -StartRow 1 -EndRow 4 -StartColumn 2 -EndColumn 3
# Results
Name Department
---- ----------
John Doe HR
Jane Smith IT
Emily Jones Finance
对此有几点需要注意。编程时,我们通常从 0 开始计数,但在本例中,我们从第一行或第一列开始计数。您指定的结束行或列包含在结果中。
但正如您所看到的,我们已指定第 4 行作为结束行。这是因为我们的 Excel 文件有标题,我们也包含了标题。
如果您不想包含标头,那么我们还需要使用参数 -NoHeaders
并在此示例中从第 2 行开始。
当您只需要导入特定列时,可以使用 -ImportColumns 参数并指定索引号(从 1 开始)。例如,要仅导入前两列,您可以执行以下操作:
import-Excel -Path "C:\temp\employeeData.xlsx" -ImportColumns 1,2
高级导入选项
当您只需要从 Excel 文件中读取特定单元格时,可以使用 Open-ExcelPackage
cmdlet,它也是 ImportExcel 模块的一部分。此 cmdlet 并不真正导入 Excel 文件,而是实际在后台打开它。
这不仅允许您读取文件中的特定单元格,还允许您进行修改。需要注意的是,完成后您需要关闭 Excel 文件。
因此,要读取特定单元格的值,我们可以首先打开Excel文件:
$excel = Open-ExcelPackage -Path "C:\temp\employeeData.xlsx"
要检索特定单元格的值,我们需要使用工作表和单元格名称。例如,要从示例文件中获取单元格 B4 的值:
$excel.EmployeeData.Cells["B4"].Value
# Returns
Emily Jones
完成后,请确保使用 Close-ExcelPackage
cmdlet 关闭 Excel 文件。
总结
ImportExcel 模块确实是一个功能强大的模块。在本文中,我们只了解了它的导入功能,但真正的优势实际上在于导出到 Excel。我们将在另一篇完全不同的文章中对此进行探讨,因此请确保您订阅新闻通讯或在 Facebook 上关注我。
希望您喜欢这篇文章,如果您有任何疑问,请在下面发表评论!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag