如何使用Powershell将Excel工作表数据格式化为Excel表格
实现示例脚本
# 加载Excel应用对象 $excel = New-Object -ComObject Excel.Application # 可选:设置Excel可见,方便调试 $excel.Visible = $true # 打开目标工作簿,替换为你的文件路径 $workbook = $excel.Workbooks.Open("C:\路径\你的文件.xlsx") # 定位到目标工作表,此处用第1个工作表,也可按名称调用如$workbook.Worksheets.Item("Sheet1") $worksheet = $workbook.Worksheets.Item(1) # 定义要转为表格的数据范围,此处默认取工作表已使用的有效数据范围,也可手动指定如$worksheet.Range("A1:C10") $dataRange = $worksheet.UsedRange # 常量定义:数据源类型为单元格范围、表格包含表头 $xlSrcRange = 1 $xlYes = 1 # 创建表格 $table = $worksheet.ListObjects.Add($xlSrcRange, $dataRange, $null, $xlYes) # 可选:设置自定义表格名称 $table.Name = "业务数据表" # 可选:设置表格样式,和Excel界面内置样式名称对应,比如"TableStyleMedium2"为中等深浅蓝色系样式 $table.TableStyle = "TableStyleMedium2" # 保存修改,不需要自动保存可注释 $workbook.Save() # 清理COM对象,避免Excel进程后台残留 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($table) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($dataRange) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($worksheet) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null [GC]::Collect() [GC]::WaitForPendingFinalizers()
关键参数说明
ListObjects.Add的第四个参数对应手动操作的「表格包含表头」选项:- 传
$xlYes = 1表示所选范围第一行是表头 - 传
$xlNo = 2表示无表头,Excel会自动生成默认列名(列1、列2...) - 传
$xlGuess = 0让Excel自动判断是否存在表头
- 传
- 内置表格样式可根据需求替换,常见可选值还有
TableStyleLight1(浅色基础样式)、TableStyleDark1(深色基础样式)等。
注意事项
- 脚本仅适配微软Office Excel,若使用WPS表格,需将创建COM对象的代码替换为
$excel = New-Object -ComObject Et.Application - 操作完成后必须按示例步骤释放COM对象,否则会出现Excel进程后台挂起的问题
内容的提问来源于stack exchange,提问作者Gufus
相关产品推荐
相关产品推荐

