【问题标题】:Extract gz and convert csv to xlsx提取gz并将csv转换为xlsx
【发布时间】:2016-04-03 16:15:49
【问题描述】:

我希望有人可以帮助我解决这个问题。我试图用谷歌搜索一些可以满足我需要的东西,但没有任何特定或易于适应的东西,而且我在编程和编码方面是个笨蛋......

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

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

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

  • 运行操作系统为 Windows 7 Enterprise(已安装 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 文件中

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

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

【问题讨论】:

  • 1. Google '使用 powershell 提取 gz' 2. Google '使用 powershell 将 csv 转换为 xlsx' 3. Google '使用 powershell 重命名文件' 4. Google '使用 powershell 删除文件'
  • 也许我只是累了,心情还不错,但我猜 OP 实际上花更多的时间来下订单,而不是谷歌搜索如何解决问题。

标签: excel csv vbscript gzip


【解决方案1】:

虽然我同意 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

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

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

【讨论】:

  • 您好,感谢您的回答!在谷歌上搜索我知道最好的语言可能是 PS,但它对我来说真是一团糟。例如,在这些日子里,一些要求发生了变化,现在我必须将文件保存在 xlsb 中。我按照您在代码中评论的链接希望找到我自己的更新方法,但我不明白该怎么做......
【解决方案2】:
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 }

【讨论】:

  • 这不会产生正确的 xlsx 文件。
猜你喜欢
  • 2013-07-15
  • 2018-08-27
  • 1970-01-01
  • 2012-08-12
  • 2013-07-01
  • 2018-08-08
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多