我正在使用Power automation来处理Excel文件-单选项卡Excel文件中的数据被格式化为表格,这使得它更容易在Power automation中使用。
数据来自的系统生成一个CSV文件,我试图找出一个中间层解决方案,将CSV文件转换为Excel文件,并将数据格式化为表格。
我研究了Power automated解决方案(任何解决方案似乎都需要一个高级连接器),我研究了PowerShell -将CSV转换为Excel很好,但是作为表格的格式似乎有问题。
我对其他解决方案持开放态度,但我更愿意使用微软堆栈中的东西,而远离其他供应商/第三方。
如前所述,如果您安装并导入ImportExcel模块,那么将导入的CSV数据格式化为表格就不难了。
Import-CSV -Path 'X:theInput.csv' | Export-Excel -TableName 'WhatEver' -TableStyle Medium13 -Path 'X:'theOutput.xlsx'
样式以"Medium13
"为例。还有更多的款式。你可以在这里找到TableStyles枚举
使用Excel COM对象也应该可以做到这一点。
为此,在新工作表中加载CSV数据后,需要从表列和单元格创建一个Range对象,并将该范围添加到工作表的ListObjects集合中。这将返回一个ListObject对象,您可以在变量中捕获该对象。
您可以使用$myListObject.TableStyle = "TableStyleMedium9"
.TableStyle
属性然而,这需要你在使用ImportExcel模块时不需要的地方安装Excel。
我最近不得不解决这个问题,我只使用O365云工具实现了一个完全自动化的解决方案。
Csv通过电子邮件发送给我,这触发了在SharePoint中创建Csv文件的流程。然后flow对它运行一个excel宏,将标题设置为不带空格的格式,这对下一步很重要。
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
// Set range A1:H1 on selectedSheet
selectedSheet.getRange("A1:H1").setValues([["Model", "Serial",
"AssignedTo", "LastCheckin", "WarrantyExpiry", "State", "Substate",
"DisposalReason"]]);
}
然后对其运行另一个宏,将数据格式化为具有可变大小的表,具体取决于导出的日期。
function main(workbook: ExcelScript.Workbook) {
// Get the current worksheet.
let selectedSheet = workbook.getActiveWorksheet();
// Create a table with the used cells.
let usedRange = selectedSheet.getUsedRange();
let newTable = selectedSheet.addTable(usedRange, true);
}
图1所示。如何从Power automation中使用Excel宏Excel宏
如果有人更喜欢Power automation,可以试试这个免费的模板,它可以将大多数CSV转换成一个新的Excel文件,并基于CSV头&值……https://powerusers.microsoft.com/t5/Power-Automate-Cookbook/CSV-To-New-Excel-Table/td-p/1826096
不需要高级、第三方或Office Script连接器。