Otwórz Notatnik, utwórz plik o nazwie XlsToCsv.vbs i wklej to w:
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"
Następnie z wiersza poleceń przejdź do folderu, w którym zapisałeś plik .vbs i uruchom:
XlsToCsv.vbs [sourcexlsFile].xls [destinationcsvfile].csv
Wymaga to jednak zainstalowania programu Excel na komputerze, na którym się znajdujesz.
oExcel.Workbooks.Open
wierszu z żądanym indeksem arkusza (zaczyna się od 1):oBook.Worksheets(1).Activate
Nieznacznie zmodyfikowana wersja odpowiedzi ScottF, która nie wymaga bezwzględnych ścieżek plików:
Zmieniłem nazwę skryptu na ExcelToCsv, ponieważ ten skrypt w ogóle nie ogranicza się do xls. xlsx działa dobrze, jak mogliśmy się spodziewać.
Przetestowano z pakietem Office 2010.
źródło
Małe rozszerzenie o świetnym skrypcie VB firmy ScottF: ten plik wsadowy przejdzie przez pliki .xlsx w katalogu i zrzuci je do plików * .csv:
Uwaga: możesz zmienić rozszerzenie .xlsx na .xls i nazwę skryptu ExcelToCSV na XlsToCsv
źródło
A co z PowerShell?
Kod powinien wyglądać tak, ale nie testowany
Oto post wyjaśniający, jak go używać
Jak używać programu Windows PowerShell do automatyzacji programu Microsoft Excel?
źródło
$Excel.Workbooks.Open
metodą. Nie mógł znaleźć określonego pliku. Obejrzałem to, używającGet-Item
pliku i umieszczając go wForEach-Object
pętli (coś, co i tak zrobię w mojej ostatecznej implementacji) dla dwóch linii zaczynających się od$Workbook
.CD /D C:\ && DIR YOURDOC.csv /s
. Okazuje się, że plik został domyślnie zapisany w folderze Moje dokumenty. Musisz więc umieścić więcej w skrypcie, jeśli chcesz zapisać plik w tym samym folderze, w którym pracujesz (jeśli jest inny niż Moje dokumenty).Musiałem wyodrębnić kilka CV z różnych arkuszy, więc tutaj jest zmodyfikowana wersja kodu plang, która pozwala określić nazwę arkusza.
źródło
Oto wersja, która poradzi sobie z przeciąganiem i upuszczaniem wielu plików z systemu Windows. W oparciu o powyższe prace autorstwa
Otwórz Notatnik, utwórz plik o nazwie XlsToCsv.vbs i wklej to w:
źródło
Dlaczego nie napisać własnego?
Widzę z twojego profilu, że masz przynajmniej pewne doświadczenie w C # / .NET. Utworzyłbym aplikację konsoli Windows i użył darmowego czytnika Excela do odczytu plików Excela. Użyłem programu Excel Data ReaderBez problemu dostępnego w CodePlex (jedna fajna rzecz: ten czytnik nie wymaga instalacji Excela). Możesz wywołać aplikację konsoli z wiersza poleceń.
Jeśli utkniesz, napisz tutaj i na pewno otrzymasz pomoc.
źródło
Możesz to zrobić za pomocą Alacon - narzędzia wiersza poleceń dla bazy danych Alasql . Działa z Node.js, więc musisz zainstalować Node.js, a następnie pakiet Alasql .
Aby przekonwertować plik Excel do CVS (ot TSV), możesz wpisać:
Domyślnie Alasql konwertuje dane z "Arkusza1", ale możesz to zmienić za pomocą parametrów:
Alacon obsługuje inne typy konwersji (CSV, TSV, TXT, XLSX, XLS) i konstrukcje języka SQL ( przykłady znajdują się w instrukcji obsługi).
źródło
W systemie Windows jest wbudowany dostawca danych Excel OLEDB; możesz użyć tego do „odpytania” arkusza Excela przez ADO.NET i zapisania wyników do pliku CSV. Wymagana jest niewielka ilość kodu, ale nie powinieneś niczego instalować na komputerze.
źródło
Opierając się na tym, co zapewnił Jon of All Trades, następujące (~ n) usunęły nieznośny problem z podwójnym rozszerzeniem:
FOR /f "delims=" %%i IN ('DIR *.xlsx /b') DO ExcelToCSV.vbs "%%i" "%%~ni.csv"
źródło
Wypróbowałem rozwiązanie ScottF VB i uruchomiłem je. Jednak chciałem przekonwertować plik Excel z wieloma kartami (skoroszyt) do pojedynczego pliku .csv.
To nie zadziałało, tylko jedna karta (ta, która jest podświetlona, gdy otwieram ją w programie Excel) została skopiowana.
Czy ktoś jest świadomy istnienia skryptu, który może przekonwertować plik Excel z wieloma kartami na pojedynczy plik .csv?
źródło
Odpowiedź Scotta F. jest najlepsza, jaką znalazłem w Internecie. Dodałem do jego kodu, aby spełnić moje potrzeby. Dodałem:
Przy błędzie Wznów Dalej <- Aby uwzględnić brakujące pliki xls w moim przetwarzaniu wsadowym u góry. oBook.Application.Columns ("A: J"). NumberFormat = "@" <- Przed wierszem SaveAs, aby upewnić się, że moje dane są zapisane w formacie tekstowym, aby program Excel nie usuwał wiodących zer i przecinków w ciągach liczbowych w moich danych tj. (1200 do 1200). Zakres kolumn powinien być dostosowany do twoich potrzeb (A: J).
Usunąłem również Echo „gotowe”, aby nie było interaktywne.
Następnie dodałem skrypt do pliku wsadowego cmd w celu przetwarzania zautomatyzowanych danych co godzinę za pośrednictwem zadania.
źródło
Wszystkie te odpowiedzi pomogły mi skonstruować następujący skrypt, który automatycznie konwertuje pliki XLS * na CSV i odwrotnie , upuszczając jeden lub więcej plików w skrypcie (lub za pomocą wiersza poleceń). Przepraszamy za nieprzyjemne formatowanie.
źródło
:: Dla UTF-8 działa dla Microsoft Office 2016 i nowszych!
Wypróbuj ten kod:
źródło
Utwórz na pulpicie plik TXT o nazwie „xls2csv.vbs” i wklej kod:
Przeciągnij do niego plik XLS (np. „Test.xls”). Utworzy przekonwertowany plik CSV o nazwie „test.xls.csv”. Następnie zmień jego nazwę na „test.csv”. Gotowe.
źródło