2013-04-03 6 views
0


Я пишу программу для преобразования CSV-файла в файл Excel в VBScript.Преобразование CSV-файла в Excel в VBScript

Это часть моего файла .csv (Он имеет заголовок, а)

Название отчета, характеристики товаров Performance Report ,, Отчет Название, характеристики товаров Производительность Отчет ,,,,,, , Начало Дата, 8/7/2012 ,,,,,,,,,, Шаблон Имя, XXXX-Test-VVV-Two-Positions ,,,,,,,,,, Всего Productions ,,,, ,,,,,,,

, ID, ФИО, Описание продукта, Дата выпуска, Тип продукта, Вес (кг), Вес (фунт), Цена, Объем продукта, Прибыль, Общая стоимость (000) , 315616102, Lux Honey, Body Промывка, 8/1/2012, C, 0,06,0,06,93,793920,0,7455703038, 579780206, Очистить AntiDandruf, Shampoo, 8/1/2012, C, 0.06,0.06 , 60.5,1325980,2.05,8022179000 , 761713106, Loreal Divine, Face Crub 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 file.i хочет отобразить данные в табличной форме.

Может ли кто-нибудь помочь мне извлечь данные на основе разделителей. Мне также нужна часть заголовка в файле excel.

Заранее спасибо

ответ

2

Есть несколько вопросов, с кодом из обновленной вопрос:

  • Const XlPlatform = "xlWindows"

    XlPlatform должно быть числовое значение, а не строка. Член xlWindowsenumeration имеет значение 2. Однако, поскольку это по умолчанию в любом случае, вы можете просто опустить это значение при вызове OpenText.

  • Set workBook1 = xlApp.ActiveWorkBook

    Недавно порождал экземпляр Excel не имеет активную рабочую книгу, так что бессмысленно назначать, что переменный перед вами на самом деле открыть или создать учебное пособие.

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

    OpenText метод не возвращает объект, так что нет ничего, чтобы назначить в вышеупомянутом заявлении.

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

    Строка "CRLF" не характер. Почему в любом случае вы хотите указать разрывы строк как разделительные символы?

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

    Последние 2 Параметры, заданные в TextVisualLayout (указывается слева-rigt/справа налево) и 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 
+0

Спасибо alot Ansgar :) это работает. Спасибо alot again.you спас мой день – SriniShine

+0

Нужно ли мне, чтобы Excel был установлен, чтобы заставить это работать? – blade19899

+0

@ blade19899 Да. –

-1

Вы должны указать, какой формат вы спасаете, как. Ниже будет указать его в качестве стандартного .xls для 2003

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 
+0

Спасибо за reply.Currently Я использую Excel 2003 (.xls) .как можно указать формат данных в Excel 2003? .. ?? – SriniShine

+0

Попробуйте обновленный код. Это было какое-то время, но я думаю, что так оно и было. – user2140261

+0

Ваш код VBA, а не VBScript. Именованные параметры не работают в VBScript. –

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 


Моя реализация имущества OpenText для вышеупомянутых.CSV файл

Set workBook1 = xlApp.WorkBooks.OpenText("D:\Personal Folders\XXXX\TestFile1.csv", , ,xlDelimited, ,false ,false ,false ,True,false ,false ,"~") 
+0

['OpenText'] (http://msdn.microsoft.com/en-us/library/office/ff837097.aspx) - это метод импорта текстовых файлов. Поскольку VBScript не поддерживает именованные параметры, вы должны указать все параметры в правильном порядке. Тем не менее, вы можете опустить значения параметров, которые вы хотите сохранить по умолчанию, и полностью исключить значения по умолчанию. Значение 'dataTypes' представляет собой массив, который определяет формат для каждого импортированного столбца.Когда файл открывается успешно, созданный объект рабочей книги присваивается переменной 'wb'. –

+0

Ansgar: Спасибо большое за ответ. Я узнал, что есть 12 параметров для свойства OpenText. Но теперь я получаю сообщение об ошибке «Невозможно получить свойство OpenText класса WorkBooks». Вы знаете причину этого? Я отредактировал сценарий obove с моей версией OpenText – SriniShine

+0

. Я включил мою реализацию для OpenText в вышеприведенном сообщении. Спасибо – SriniShine

Смежные вопросы