我正在编写一个程序,将.csv文件转换为VBScript中的Excel文件。
这是我的.csv文件的一部分(它也有一个标题)
报告标题,商品性能特征报告,报告 标题,商品性能特征报告,,,,,,,开始 日期,8/7/2012 ,,,,,,,,,,模板 名称,XXXX-Test-VVV-Two-Positions ,,,,,,,,,,总计 制作,,,,,,,,,,,
,ID,名称,产品描述,发行日期,产品类型,重量 (kg),重量(磅),价格,产品体积,利润,总价值(000) ,315616102,Lux Honey,Body Wash,8/1/2012,C,0.06,0.06,93,793920,0,7455703038,579780206,Clear AntiDandruf,洗发水,8/1/2012年,C,0.06,0.06,60.5,1325980,2.05,8022179000 ,761713106,Loreal Divine,Face Crub,8/1/2012年,楼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文件中的数据不是表格形式。我想以表格形式显示数据。
任何人都可以请我帮助我根据delimeters提取数据。我也需要excel文件中的标题部分。
提前致谢
答案 0 :(得分:3)
您更新的问题中的代码存在以下几个问题:
Const XlPlatform = "xlWindows"
XlPlatform
必须是数字值,而不是字符串。 enumeration的xlWindows
成员的值为2
。但是,由于这是默认值,您可以在调用OpenText
时忽略此值。
Set workBook1 = xlApp.ActiveWorkBook
新生成的Excel实例没有活动工作簿,因此在实际打开或创建工作簿之前将其分配给变量是没有意义的。
Set workBook1 = xlApp.WorkBooks.OpenText(...)
OpenText
方法不返回对象,因此在上述语句中没有任何内容可以分配。
...ooks.OpenText(..., true, "CRLF", ...)
字符串"CRLF"
不是字符。为什么要将换行符指定为分隔符?
..., Array(...), true, false)
您指定的最后两个参数是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
答案 1 :(得分:0)
我正在使用Excel 2003.以下是我指定.csv文件格式的代码
Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.OpenText "input.csv", , , xlDelimited, xlDoubleQuote, _
False, False, True, , , , dataTypes
来自Vbscript to import csv into 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 ,"~")
答案 2 :(得分:-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