-1
我正在尝试完成以下任务。我搜索并找到了一些其他人共享的代码,这些代码似乎只是将每个CVS文件保存在工作表上。所以这里是我试图做的:将2个CVS文件导出到1个Excel工作表和另一个CSV文件到同一个工作簿但不同的工作表
有3个CSV文件,我从SQL结果使用PowerShell创建。我想将前3个CSV文件复制到.xslx上的1个工作表中,然后我想将第3个CSV文件复制到同一个工作簿中,而是复制到工作表2.我还想要使用set页眉和页脚上的颜色,但有条件地显示其中每行的数据。
这里是我的代码至今:
param (
[string]$InputPath = "C:\Users\bry30794\Documents\PS_Test",
[string]$OutputPath = "C:\Users\bry30794\Documents\PS_Test",
[string]$OutputFile = "test.xlsx"
)
$Excel = New-Object -Com Excel.Application
$Excel.Visible = $False
$Excel.DisplayAlerts = $False
$Workbook = $Excel.Workbooks.Add()
# add 2 additional worksheets
$Workbook.Worksheets.Add() | Out-Null
$Workbook.Worksheets.Add() | Out-Null
##################################################
# Performance_Overall
##################################################
#Use the first worksheet in the workbook
$Worksheet = $Workbook.Worksheets.Item(1)
#Set name
$Worksheet.Name = "Performance_Overall"
$csvFileNameWithPath = "$($InputPath)\test1.csv"
$Tempcsv = $Excel.Workbooks.Open($csvFileNameWithPath)
$Tempsheet = $Tempcsv.Worksheets.Item(1)
#Copy contents of the CSV file
$Tempsheet.UsedRange.Copy() | Out-Null
#Paste contents of CSV into existing workbook
$Worksheet.Paste()
#Close temp workbook
$Tempcsv.Close()
#Select all used cells
$Range = $Worksheet.UsedRange
#Autofit the columns
$Range.EntireColumn.Autofit() | Out-Null
##[void]$ws.Range("A8").PasteSpecial(-4163)
##################################################
# add second view - Performance_by_Region
##################################################
$Worksheet = $Workbook.Worksheets.Item(2)
$Worksheet.Name = "Performance_by_Region"
$csvFileNameWithPath = "$($InputPath)\test2.csv"
$Tempcsv = $Excel.Workbooks.Open($csvFileNameWithPath)
$Tempsheet = $Tempcsv.Worksheets.Item(1)
$Tempsheet.UsedRange.Copy() | Out-Null
$Worksheet.Paste()
$Tempcsv.Close()
$Range = $Worksheet.UsedRange
$Range.EntireColumn.Autofit() | Out-Null
##################################################
# add third view - Performance_by_Category
##################################################
$Worksheet = $Workbook.Worksheets.Item(3)
$Worksheet.Name = "Performance_by_Category"
$csvFileNameWithPath = "$($InputPath)\test3.csv"
$Tempcsv = $Excel.Workbooks.Open($csvFileNameWithPath)
$Tempsheet = $Tempcsv.Worksheets.Item(1)
$Tempsheet.UsedRange.Copy() | Out-Null
$Worksheet.Paste()
$Tempcsv.Close()
$Range = $Worksheet.UsedRange
$Range.EntireColumn.Autofit() | Out-Null
##################################################
# last step - select the sheet that should be shown when
# file is opened in excel
##################################################
$ObjWorksheet = $WorkBook.Worksheets.Item(1)
[void] $ObjWorksheet.Activate()
##################################################
# save
##################################################
$outputFileNameWithPath = "$($OutputPath)\$($OutputFile)"
$Workbook.SaveAs($outputFileNameWithPath, 51) # saved as xlsx file
$Excel.Quit()
这里是我想最后的工作簿的屏幕截图:
截图1:
截图2:
我想要的红色如果一个值在这些列
16比0大到20 21〜25 26〜30 30以上
这不是一个*任务*。这是一系列的任务。因此,将它分解成几部分,并在第一部分上工作(将多个文件添加到一张纸上)。当你有这个工作,然后开始努力将第三个文件添加到它自己的工作表。当你有这个工作时,开始着手添加格式。如果你遇到困难,你可以解释你遇到的问题,包括你的代码的**相关**部分,并且询问关于该代码的**特定问题**。期待我们做这一切时,你只是倾销了一堆代码和一些图片是不合理的。 –
认真如果你不这样做每天,手动做 – DisplayName
非常感谢你的意见。我能够把它分开,一次处理每项任务,除了基于关闭条件的颜色编码以外,所有的工作都可以工作。但是,我确实有一个具体的问题,就是如何对来自CSV文件的最后一行进行颜色编码。我总是希望为CSV文件中的最后一行添加颜色代码。 CSV文件中的行数将会改变。我能够得到它的工作,但我的问题是:是否有更高效的编码方式。代码如下在答案中。我无法弄清楚如何将它添加到这个问题 – iam2nd2god