将管道分隔文件转换为 .xls
Convert pipe-delimited files to .xls
我正在尝试使用批处理文件和 vbscript 将管道分隔文件转换为 xls (Excel)。不幸的是,我的 "output.xls" 文件仍然在 table 中显示竖线分隔符并且数据没有组织。
srccsvfile = Wscript.Arguments(0)
tgtxlsfile = Wscript.Arguments(1)
'Create Spreadsheet
'Look for an existing Excel instance.
On Error Resume Next ' Turn on the error handling flag
Set objExcel = GetObject(,"Excel.Application")
'If not found, create a new instance.
If Err.Number = 429 Then '> 0
Set objExcel = CreateObject("Excel.Application")
End If
objExcel.Visible = false
objExcel.displayalerts=false
'Import CSV into Spreadsheet
Set objWorkbook = objExcel.Workbooks.open(srccsvfile)
Set objWorksheet1 = objWorkbook.Worksheets(1)
'Adjust width of columns
Set objRange = objWorksheet1.UsedRange
objRange.EntireColumn.Autofit()
'This code could be used to AutoFit a select number of columns
'For intColumns = 1 To 17
' objExcel.Columns(intColumns).AutoFit()
'Next
'Make Headings Bold
objExcel.Rows(1).Font.Bold = TRUE
'Freeze header row
With objExcel.ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
objExcel.ActiveWindow.FreezePanes = True
'Add Data Filters to Heading Row
objExcel.Rows(1).AutoFilter
'set header row gray
objExcel.Rows(1).Interior.ColorIndex = 15
'-0.249977111117893
'Save Spreadsheet, 51 = Excel 2007-2010
objWorksheet1.SaveAs tgtxlsfile, 51
'Release Lock on Spreadsheet
objExcel.Quit()
Set objWorksheet1 = Nothing
Set objWorkbook = Nothing
Set ObjExcel = Nothing
管道不等于逗号,Excel 本身知道如何处理 CSV,但不知道如何处理管道。
一切都没有丢失,记录您手动打开文件的操作,一旦打开突出显示列 A 并单击数据/文本到列,选择分隔并在 "other" 框中放一个管道然后单击下一步,选择列格式(如果您需要喜欢邮政编码和 phone 数字,最好将数字格式化为文本)然后单击完成。
现在停止记录器并查看它生成的代码。将其移植到脚本中的 Excel 对象。
Excel 在读取 CSV 文件时有点挑剔。如果您有一个扩展名为 .csv
的分隔文件,如果分隔符是系统区域设置中配置的字符,则 Excel 只能通过 Open
方法正确打开它。
Open
方法具有可选参数,允许您指定自定义分隔符(感谢@Jeeped 指出了这一点):
set objWorkbook = objExcel.Workbooks.Open(srccsvfile, , , 6, , , , , "|")
也可以使用OpenText
方法(录制宏时会用到):
objExcel.Workbooks.OpenText srccsvfile, , , 1, , , , , , , True, "|"
Set objWorkbook = objExcel.Workbooks(1)
请注意,OpenText
方法不会return一个工作簿对象,因此您必须在打开文件后自行将工作簿分配给一个变量。
重要提示: 无论哪种方式,如果您的分隔符与系统的区域字符不同,您的文件 不得 具有扩展名 .csv
设置,否则分隔符将被忽略。
我正在尝试使用批处理文件和 vbscript 将管道分隔文件转换为 xls (Excel)。不幸的是,我的 "output.xls" 文件仍然在 table 中显示竖线分隔符并且数据没有组织。
srccsvfile = Wscript.Arguments(0)
tgtxlsfile = Wscript.Arguments(1)
'Create Spreadsheet
'Look for an existing Excel instance.
On Error Resume Next ' Turn on the error handling flag
Set objExcel = GetObject(,"Excel.Application")
'If not found, create a new instance.
If Err.Number = 429 Then '> 0
Set objExcel = CreateObject("Excel.Application")
End If
objExcel.Visible = false
objExcel.displayalerts=false
'Import CSV into Spreadsheet
Set objWorkbook = objExcel.Workbooks.open(srccsvfile)
Set objWorksheet1 = objWorkbook.Worksheets(1)
'Adjust width of columns
Set objRange = objWorksheet1.UsedRange
objRange.EntireColumn.Autofit()
'This code could be used to AutoFit a select number of columns
'For intColumns = 1 To 17
' objExcel.Columns(intColumns).AutoFit()
'Next
'Make Headings Bold
objExcel.Rows(1).Font.Bold = TRUE
'Freeze header row
With objExcel.ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
objExcel.ActiveWindow.FreezePanes = True
'Add Data Filters to Heading Row
objExcel.Rows(1).AutoFilter
'set header row gray
objExcel.Rows(1).Interior.ColorIndex = 15
'-0.249977111117893
'Save Spreadsheet, 51 = Excel 2007-2010
objWorksheet1.SaveAs tgtxlsfile, 51
'Release Lock on Spreadsheet
objExcel.Quit()
Set objWorksheet1 = Nothing
Set objWorkbook = Nothing
Set ObjExcel = Nothing
管道不等于逗号,Excel 本身知道如何处理 CSV,但不知道如何处理管道。
一切都没有丢失,记录您手动打开文件的操作,一旦打开突出显示列 A 并单击数据/文本到列,选择分隔并在 "other" 框中放一个管道然后单击下一步,选择列格式(如果您需要喜欢邮政编码和 phone 数字,最好将数字格式化为文本)然后单击完成。
现在停止记录器并查看它生成的代码。将其移植到脚本中的 Excel 对象。
Excel 在读取 CSV 文件时有点挑剔。如果您有一个扩展名为 .csv
的分隔文件,如果分隔符是系统区域设置中配置的字符,则 Excel 只能通过 Open
方法正确打开它。
Open
方法具有可选参数,允许您指定自定义分隔符(感谢@Jeeped 指出了这一点):
set objWorkbook = objExcel.Workbooks.Open(srccsvfile, , , 6, , , , , "|")
也可以使用OpenText
方法(录制宏时会用到):
objExcel.Workbooks.OpenText srccsvfile, , , 1, , , , , , , True, "|"
Set objWorkbook = objExcel.Workbooks(1)
请注意,OpenText
方法不会return一个工作簿对象,因此您必须在打开文件后自行将工作簿分配给一个变量。
重要提示: 无论哪种方式,如果您的分隔符与系统的区域字符不同,您的文件 不得 具有扩展名 .csv
设置,否则分隔符将被忽略。