将多个CSV转换为xls或xlsx并将格式应用于它们

我有一个很大的Excel文件,用于汇总跨多个客户端的问题的跟踪,我需要根据客户端将其分成更小的文件。

以下是我目前为止的内容:我已经构build了一个python脚本,它将文件分割成适当的客户端特定的文件,并将正确的标题行应用于所有文件,但会产生难看的CSV。 我的老板想要应用一些格式,所以我需要做的是(对于目录中的所有CSV):

  1. 将每个文件从CSV转换为.xls(或.xlsx),以便保存格式

  2. 自动填充列宽

  3. 使第一行加粗(也可以在行中加一个颜色)

到目前为止,我猜我可以用pyWin32或者pyExcelerator来做这个,但是考虑到我正在做的改变有多么微小,可能会更容易做到VB脚本或macros或者其他东西,但是我不会真的不知道这些工具。

最简单的方法是使用VBA

这里有一个快速的macros,循环播放csv的打开文件夹,应用自动调整并保存为.xlsx

注意:

  1. 它利用早期绑定,因此需要参考脚本运行时。 如果您愿意,可以很容易地修改为后期绑定。
  2. 为了清晰起见,我省略了error handling和各种速度优化。 是否足够安全或足够快将取决于您的预期用途和文件的数量和大小。

 Sub FormatCSVs() Dim fso As FileSystemObject Dim pth As String Dim fl As File Dim wb As Workbook Set fso = New FileSystemObject pth = "C:\Test" ' <-- replace with your path, or add a folder selection dialog For Each fl In fso.GetFolder(pth).Files If StrComp(fso.GetExtensionName(fl.Path), "csv", vbTextCompare) = 0 Then Set wb = Workbooks.Open(fl.Path) With wb.Sheets(1) .UsedRange.EntireColumn.AutoFit .Rows(1).Font.Bold = True .Rows(1).Interior.ColorIndex = 3 End With wb.SaveAs pth & "\" & fso.GetBaseName(fl.Path), xlOpenXMLWorkbook ' or use xlExcel8 for .xls wb.Close End If Next Set fl = Nothing Set fso = Nothing End Sub 

编辑:

额外的格式添加到代码