自动将CSV转换为Excel,并格式化为表格

vh0rcniy  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(206)

我正在使用Power Automate处理Excel文件-单选项卡Excel文件中的数据被格式化为表格,这使得在Power Automate中更容易使用。
数据来源的系统生成一个CSV文件,我正在尝试找出一个中间层解决方案,将CSV文件转换为Excel文件,并将数据格式化为表。
我已经研究过Power Automate解决方案(任何解决方案似乎都需要高级连接器),我也研究过PowerShell -将CSV转换为Excel是可以的,但作为表格的格式似乎有问题。
我对其他解决方案持开放态度,但我更喜欢使用Microsoft堆栈中的一些解决方案,而不使用其他供应商/第三方。

lymnna71

lymnna711#

正如所评论的,如果您安装并导入模块ImportExcel,那么将导入的CSV数据格式化为表格并不困难。

Import-CSV -Path 'X:\theInput.csv' | Export-Excel -TableName 'WhatEver' -TableStyle Medium13 -Path 'X:\'theOutput.xlsx'

样式Medium13是一个示例。还有很多其他样式。您可以找到TableStyles枚举here
也可以使用Excel COM对象执行此操作。
为此,在将CSV数据加载到新工作表中后,需要从表格列和单元格创建一个Range对象,并将该范围添加到工作表的ListObjects集合中。这将返回一个可以在变量中捕获的ListObject对象。
然后可以使用$myListObject.TableStyle = "TableStyleMedium9"设置此对象的.TableStyle属性
但是,这需要您在使用ImportExcel模块时不需要的位置安装Excel。

wrrgggsh

wrrgggsh2#

我最近不得不解决这个确切的问题,我只使用O365云工具实现了一个完全自动化的解决方案。
Csv通过电子邮件发送给我,这会触发流在SharePoint中创建一个csv文件。然后流针对该文件运行一个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 Automate中的Excel宏 * Excel Macro
cbeh67ev

cbeh67ev3#

如果有人喜欢Power Automate,请尝试这个免费模板,它可以将大多数CSV转换为新的Excel文件,并基于CSV标题和值创建新的表格。
不需要高级连接器、第三方连接器或Office Script连接器。

相关问题