提取 gz 并将 csv 转换为 xlsx

Extract gz and convert csv to xlsx

我希望有人能帮我解决这个问题。我尝试 Google 做我需要的东西,但没有任何具体或容易适应的东西,我在编程和编码方面很笨...

我每天使用的一个应用程序会生成多个 gz 文件,每个文件包含一个 csv 文件。为了简化我的生活,我希望 运行 一个脚本可以完成这项工作:

  1. 从当前文件夹中的任何 gz 中提取 csv 文件
  2. 将任何提取的 csv 文件保存为同一文件夹中的 xlsx 文件
  3. 正确重命名 xlsx 文件
  4. 从当前文件夹中删除任何 gz 和 csv 文件

这里有一些关于环境和要求的更多细节:

如果您需要更多详细信息,请告诉我,提前感谢您提供的任何帮助:)

7z e *.gz;ls | foreach {$old=$_.name;$newname='OutputFile - '+$oldname.split('_')[0]+'_'+$oldname.split('_')[3]+$oldname.split('_')[4]+$oldname.split('_')[2]+'_'+$oldname.split('_')[1]+'.xlsx';mv $oldname $newname }

虽然我同意 OP 似乎没有尽其所能解决这个问题(Google 有多难?),但我知道将来会有其他人关注。发布信息会对他们有所帮助。

@OP,我不会为你做所有的文件处理工作,但这是从 CSV 转换为 XLSX 的基本代码,这可能是所提出问题中最不常见的部分。

Option Explicit

Dim strCSVfile, strExcelFile, FSO
Dim objWorkbook, objWorksheet1

set FSO = CreateObject("Scripting.FileSystemObject")

strCSVfile = "C:\temp\Excel Test\myFile.csv"
strExcelFile = "C:\temp\Excel Test\myFile.xlsb"  'this was changed

if FSO.FileExists(strCSVfile) then
   Dim objExcel
   Set objExcel = CreateObject("Excel.Application")

   objExcel.Visible = False
   objExcel.displayalerts=false

   'Import CSV into Spreadsheet
   Set objWorkbook = objExcel.Workbooks.open(strCSVfile)
   Set objWorksheet1 = objWorkbook.Worksheets(1)

   'Save workbook (51 = 2010 format) 
   'Formats ref https://msdn.microsoft.com/en-us/library/office/ff198017.aspx
   'Parameters ref https://msdn.microsoft.com/en-us/library/office/ff841185.aspx 
   objWorksheet1.SaveAs strExcelFile, 50  'this was changed
   objExcel.Quit()
else
   msgbox "File Note found"
end if

编辑: 顺便说一句,OP@... post 你的代码和更多的人会帮助你。如果您使用您为解压缩和文件处理编写的代码更新您的问题,我会帮助解决这部分问题。

编辑: 针对 .xlsb 格式输出进行了更新。行更改标记为这样。