0


我正在编写一个程序来将 .csv 文件转换为 VBScript 中的 Excel 文件。

这是我的 .csv 文件的一部分(它也有一个标题)

报告标题,货物性能特征报告,,报告标题,货物性能特征报告,,,,,,, 开始日期,8/7/2012,,,,,,,,,,,模板名称,XXXX-Test-VVV-两个职位,,,,,,,,,, 总产量,,,,,,,,,,,,

,ID,名称,产品描述,发布日期,产品类型,重量 (kg),重量 (lb),价格,产品体积,利润,总值 (000),315616102,Lux Honey,沐浴露,8/1/2012 ,C,0.06,0.06,93,793920,0,7455703038 ,579780206,清除去头屑,洗发水,8/1/2012,C,0.06,0.06,60.5,1325980,2.05,8022179000 ,761713106,Loreal Divine, 8/1/2012,F,0.12,0.12,46.52,3314780,5.07,15420356560

这是我为转换编写的更新的 VBScript 代码。

Dim xlApp, workBook1, workBook2,aSheets, fileName, aInfo2,aInfo1,oExcel
  Const XlPlatform = "xlWindows"
  Const xlDelimited = 1
  Const xlTextQualifierDoubleQuote = 1
  Const xlTextFormat = 2
  Const xlGeneralFormat = 1


  Set oExcel = Sys.OleObject("Excel.Application")  
  Set xlApp = CreateObject("Excel.Application")  

  Set workBook1 = xlApp.ActiveWorkBook

  Set workBook1 = xlApp.WorkBooks.OpenText("Y:\Personal Folders\XXXX\TestFile1.csv",XlPlatform, 1, xlDelimited, xlTextQualifierDoubleQuote, true, false, false, true, false, true, "CRLF", Array(Array (1,2),Array (2,2),Array (3,2),Array (4,1),Array (5,2),Array (6,1),Array (7,1),Array (8,1),Array (9,1),Array (10,1),Array (11,1)), true, false)

  Set workBook1 = xlApp.ActiveWorkBook
  xlApp.Visible = true

  workBook1.Save "Y:\Personal Folders\XXXX\x.xlsx", xlNormal
  workBook1.Close

但是Excel文件中的数据不是表格形式。我想以表格形式显示数据。

谁能帮我根据分隔符提取数据。我也需要excel文件中的标题部分。

提前致谢

4

3 回答 3

3

您更新的问题中的代码存在几个问题:

  • Const XlPlatform = "xlWindows"

    XlPlatform必须是数值,而不是字符串。枚举xlWindows成员的值为。但是,由于无论如何这是默认值,您可以在调用时简单地省略此值。2OpenText

  • Set workBook1 = xlApp.ActiveWorkBook

    新生成的 Excel 实例没有活动工作簿,因此在实际打开或创建工作簿之前将其分配给变量是没有意义的。

  • Set workBook1 = xlApp.WorkBooks.OpenText(...)

    OpenText方法不返回对象,因此在上面的语句中没有要分配的内容。

  • ...ooks.OpenText(..., true, "CRLF", ...)

    字符串"CRLF"不是字符。为什么还要将换行符指定为分隔符?

  • ..., Array(...), true, false)

    您指定的最后 2 个参数是TextVisualLayout(指定从左到右/从右到左)和DecimalSeparator. 它们都不是布尔值。如果您不确定是否需要它们,只需省略它们即可。

  • workBook1.Save "Y:\Personal Folders\XXXX\x.xlsx", xlNormal

    Save方法以当前名称保存工作簿。要以不同的名称保存工作簿,您必须使用该SaveAs方法。该常量xlNormal未在代码中的任何位置定义。另外,xlNormal生成 Excel 97/2003 工作簿 ( .xls)。要将工作簿另存为 Excel 2007/2010 工作簿 ( .xlsx),您必须使用xlOpenXMLWorkbook常量。

以下代码对我有用:

Const xlDelimited                =  1
Const xlTextQualifierDoubleQuote =  1
Const xlOpenXMLWorkbook          = 51

Set xl = CreateObject("Excel.Application")

xl.Workbooks.OpenText "Y:\Personal Folders\XXXX\TestFile1.csv", , , xlDelimited _
  , xlTextQualifierDoubleQuote, True, False, False, True, False, False, _
  , Array(Array(1,2), Array(2,2), Array(3,2), Array(4,1), Array(5,2) _
  , Array(6,1), Array(7,1), Array(8,1), Array(9,1), Array(10,1), Array(11,1))
Set wb = xl.ActiveWorkbook

wb.SaveAs "Y:\Personal Folders\XXXX\x.xlsx", xlOpenXMLWorkbook, , , , False
wb.Close

xl.Quit
于 2013-04-05T14:07:09.990 回答
0

我正在使用 Excel 2003。以下是我必须指定 .csv 文件格式的代码

Set xl = CreateObject("Excel.Application")

Set wb = xl.Workbooks.OpenText "input.csv", , , xlDelimited, xlDoubleQuote, _
  False, False, True, , , , dataTypes

Vbscript 将 csv 导入 excel

您能否解释一下以下行的功能?

Set wb = xl.Workbooks.OpenText "input.csv", , , xlDelimited, xlDoubleQuote, _
      False, False, True, , , , dataTypes


我对上述 .csv 文件的 OpenText 属性的实现

Set workBook1 = xlApp.WorkBooks.OpenText("D:\Personal Folders\XXXX\TestFile1.csv", , ,xlDelimited, ,false ,false ,false ,True,false ,false ,"~")
于 2013-04-03T15:11:44.453 回答
-1

您需要指定要保存的格式。以下将其指定为 2003 年的标准 .xls

    Workbooks.Open Filename:= _
    "D:\Personal Folders\XXXXX\TestFile1.csv"

    ActiveWorkbook.SaveAs Filename:= _
    "D:\Personal Folders\XXXXX\x.xls", FileFormat:=xlNormal

    ActiveWorkbook.Close

也可以试试

ActiveWorkbook.SaveAs Filename:= _
    "D:\Personal Folders\XXXXX\x.xls", FileFormat:= 56
于 2013-04-03T12:39:46.177 回答