2015-07-24 49 views
5

Poszukuję sposobu, aby przekonwertować serię plików .csv na .xlsx za pomocą wiersza polecenia.Konwersja .CSV do .XLSX przy użyciu wiersza polecenia

Próbowałem kilka różnych VBScripts, które znalazłem, ale wszystkie wydają się konwertować .xlsx do .csv, a nie na odwrót.

Oto najbliższy mogłem znaleźć, ale znowu to .xlsx do .csv:

if WScript.Arguments.Count < 2 Then 
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv" 
    Wscript.Quit 
End If 
Dim oExcel 
Set oExcel = CreateObject("Excel.Application") 
Dim oBook 
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0)) 
oBook.SaveAs WScript.Arguments.Item(1), 6 
oBook.Close False 
oExcel.Quit 
WScript.Echo "Done" 

Jakieś pomysły?

Odpowiedz

6

tylko warunkiem wstępnym jest to, że „.csv” musi być małe litery w nazwie pliku:

Dim file, WB 

With CreateObject("Excel.Application") 
    On Error Resume Next 
    For Each file In WScript.Arguments 
     Set WB = .Workbooks.Open(file) 
     WB.SaveAs Replace(WB.FullName, ".csv", ".xlsx"), 51 
     WB.Close False 
    Next  
    .Quit 
End With 

WScript.Echo "Done!" 
+0

Uruchomiłem go z wiersza poleceń z jednym plikiem csv jako argumentem, ale po prostu mówi "gotowe" i nic się nie dzieje. – crackruckles

+0

czy przekazałeś mu argumenty? i czy wywołujesz skrypt z CMD, czy używasz go bezpośrednio poprzez przeciąganie i upuszczanie? –

+0

Więc mam twoją metodę do pracy i właśnie potrzebowałem przejść absolutną ścieżkę nie tylko nazwę pliku. Dzięki za pomoc. – crackruckles

0

Czy jesteś w systemie Windows lub Linux/Mac?

Być może mam dla ciebie rozwiązanie.

Oto rozwiązanie problemów bez programów komentujących poniżej:

https://social.msdn.microsoft.com/Forums/en-US/74df1378-7c0c-4c0f-b174-fa97a5c2969b/convert-csv-to-xlsx?forum=Vsexpressvb

EDIT Więc tutaj jest podstawowym rozwiązaniem:

Zasadniczo zastosować filtr (który w przypadek byłby filtrem xlsx) z katalogu, w którym znajduje się twój plik.

NVM to właśnie widziałem jesteś na Windows ./directory --headless --convert do xlsx: "Calc MS Excel 2007 XML" FILE.CSV

w tym przypadku „Calc MS Excel 2007 XML "jest filtrem.

To działa dla pojedynczych plików, pozwól mi dodać wsad w ciągu sekundy.

+0

Niestety powinienem wymienić okna – crackruckles

+0

spróbować tych na zewnątrz, są one użyteczne konwertery dla Windows http://www.dbf2002.com/csv-converter/commandline.html http: //www.softinterface .com/Convert-XLS/Features/Convert-CSV-To-XLSX.htm –

+0

Ive wypróbowałem oba z nich i one zarówno przekonwertować je niepoprawnie i powoduje błąd podczas próby importowania ich przy użyciu SSIS do mojej bazy danych SQL, jednak jeśli robię to ręcznie przez program excel działa perfekcyjnie – crackruckles

1

W systemie Windows niedawno odpowiedziała mi się podobnym pytaniem na SuperUser.com.

https://superuser.com/a/1011154/326177

myślę Razem CSV Converter jest najtańszym rozwiązaniem z większości funkcji. Nie wymaga nawet instalacji programu Excel i może przekazywać danych CSV do JSON, Access, DBF, XML lub SQL.

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options> 
0

Oto narzędzie open-source na komputerach z systemem Windows I utworzonych przy użyciu bibliotek NPOI które wykonuje proste rozdzielany plik XLS/XLSX konwersji Excel bez konieczności zainstalowania na komputerze. Plik binarny znajduje się w Bin/Debug, jeśli nie chcesz go sam budować. Wszystkie niezbędne biblioteki są zawarte w pliku wykonywalnym, dzięki czemu może działać samodzielnie.

https://github.com/nmolinos/csv2excel

4

Zastrzeżenie: Pisałem CSV2XLSX dostępny jako open source na https://gitlab.com/DerLinkshaender/csv2xlsx

Możesz spróbować zewnętrznego narzędzia takie jak ten powyżej. Czemu?

Zalety:

  • mogą być stosowane nawet w przypadku Windows Script Host jest zablokowany.
  • Niezależnie od systemu operacyjnego, możesz więc użyć znanego narzędzia z tym samym zestawem opcji na każdym systemie operacyjnym (zapisz pamięć mózgu :-)).
  • nie jest wymagana instalacja programów Excel lub LibreOffice itp., Więc nie musisz dbać o instalowanie dodatkowych modułów ani języków.
  • podanie kilku parametrów CSV jako parametrów wiersza polecenia powoduje, że narzędzie "SysAdmin-friendly", ponieważ nie musi kopać kodu źródłowego.
  • możesz nawet określić zakresy linii lub kolumn dla danych CSV.
  • Format pliku xlsx jest bardzo skomplikowany, a napisanie go bez instalowania pakietu biurowego nie jest przeznaczone dla osób o słabym sercu.
  • lepiej nadaje się do przetwarzania wsadowego, ponieważ narzędzie może być zintegrowane z logiką pętli specyficzną dla systemu operacyjnego.
  • Próbowałem dostarczyć użyteczny zestaw flag wiersza poleceń z DevOps/SysAdmin pod uwagę, wiele istniejących skryptów nie ma dobrej kontroli za pomocą opcji wiersza poleceń.
+0

Podanie linku jest w porządku, spróbuj wyjaśnić, jak rozwiąże to problem. –

+0

@ArunVinoth - dzięki, lepiej teraz? Jestem nowicjuszem w SO. – Arminius

+0

Świetne narzędzie, upewnij się, że masz już dane UTF-8. – user121391