我有一个Powershell脚本,该脚本生成带有名称和电子邮件地址的.csv文件。我希望能够在文件顶部添加带有标题的行。
我可以使用文本文件执行此操作,但是由于某种原因,我无法使用.csv文件。建议?
[string]$FileDS = Get-Date -Format "yyyyMMdd"
[string]$outFile = "${outpath}\${members}_${FileDS}.csv"
New-Item -ItemType file $outfile -Force
$object | export-csv -path $outfile
答案 0 :(得分:1)
如果您想添加到CSV的第一行:
[array]$newRow = "Everything on the new row"
$csv = Get-Content $outFile
$newCSV = $newRow + $csv | Out-File $outFile
要添加到CSV而不删除旧数据:
$newRow | Out-File $outFile -Append
希望对您有帮助。
答案 1 :(得分:1)
有一个IETF标准RFC 4180,它指定如何生成CSV文件以及其可以包含和不能包含的内容。要直接回答您的问题,无法在CSV文件中添加“标题”。总结规范,您的文件需要具有以下内容
如您所见,没有标准的方法来设置“标题”。但是,如果您将“标题”称为“标题”,则可以使用以下
进行添加$file = import-csv $outfile -Header a , b , c | export-csv $file
其中a,b,c是您的标题。
您的数据应最终看起来如下所示
Header1, Header2, Header3 CRLF
value11, value12, value13 CRLF
value21, value22, value23 CRLF
value31, value32, value32
通过包含以下mimetype参数,标题行被指示为与数据行不同的内容
text/csv; header=present
与
相反text/csv; header=absent
您可以看到,唯一的限制是mimetype参数,定界符和回车符。如果字段数据中的数据包含换行符,逗号和/或双引号,则该字段数据将用双引号引起来。为了进一步分解Mimetype,媒体类型为text,子类型为csv,以及两个可选参数:header和charset。
由于规范中明确列出了特殊字符/保留字符以及可选参数,因此我很安全地说无法添加标题行。
由于您的最初帖子所指的是规范中未定义的“标题”,所以我会尽我所能尽可能地回答您的问题。 CSV格式是Tabluar Data标准的特定实例。有几种不同的表格数据格式,并且W3C和OKI之类的组织已经创建了标准化,其中包括的功能比RFC 4180标准更多。
您可能想研究CSV模式,我认为它是OKI标准的一部分。同样,这都是基于标准的,因此它实际上取决于使用和解析此CSV文件的方式。
如果您还有其他问题,请随时添加评论,我会尽力答复。
以下链接将带您进入三种表格数据格式的正式规范。如有疑问,我肯定会使用IETF标准,因为它是迄今为止使用最广泛的标准,但是为了防止您的消费应用程序支持它,我将W3C和OKI规范包括在内。