提取gz并将csv转换为xlsx

时间:2015-12-29 18:26:26

标签: excel csv vbscript gz

我希望有人可以帮我解决这个问题。我尝试过谷歌做我需要的东西,但没有任何特定的或容易适应的东西,我是一个有编程和编码的哑巴......

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

  1. 从当前文件夹中的任何gz中提取csv文件
  2. 将所有提取的csv文件保存为同一文件夹中的xlsx文件
  3. 正确重命名xlsx文件
  4. 从当前文件夹中删除所有gz和csv文件
  5. 这里有一些关于环境和要求的更多细节:

    • 运行操作系统是Windows 7企业版(已安装Powershell)
    • 已安装Office 2010
    • 我无法安装任何其他软件或库(它是公司的笔记本电脑)
    • 任何csv文件都有以下命名约定:

      CheeseFile_YellowCheese_yyyy_mm_dd-randomnumber_othersnumber.csv CheeseFile_BlueCheese_yyyy_mm_dd-randomnumber_othersnumber.csv HamFile_RawHam_yyyy_mm_dd-randomnumber_othersnumber.csv HamFile_CookedHam_yyyy_mm_dd-randomnumber_othersnumber.csv

    • 并应分别保存为:

      OutputFile - CheeseFile_mmddyyyy_Yellow Cheese.xlsx OutputFile - CheeseFile_mmddyyyy_Blue Cheese.xlsx OutputFile - HamFile_mmddyyyy_Raw Ham.xlsx OutputFile - HamFile_mmddyyyy_Coocked Ham.xlsx

    • 原始文件名中的日期必须保存在输出xlsx文件中

    • 奶酪文件位于其文件夹中,而Ham文件位于单独的文件夹中,因此我可以根据需要调整脚本。

    如果您需要更多详细信息,请告知我们,并提前感谢您提供的任何理解:)

2 个答案:

答案 0 :(得分:0)

虽然我同意OP似乎没有公平分享这一点(谷歌有多难?),但我知道其他人将会在寻找未来。发布信息将有助于他们。

@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

编辑: BTW,OP @ ...发布您的代码,更多人会帮助您。如果您使用为解压缩和文件处理而编写的代码更新您的问题,我将帮助您完成该部分。

编辑:更新了.xlsb格式输出。行更改标记为。

答案 1 :(得分:-3)

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 }