명령줄에서 Linux에서 xlsx를 csv로 변환
Linux에서 xlsx 파일을 csv 파일로 변환하는 방법을 찾고 있습니다.
PHP/Perl 같은 것은 사용하고 싶지 않기 때문에, 몇백만 회선의 처리를 검토하고 있기 때문에, 빠른 것이 필요합니다.Ubuntu 저장소에서 xls2csv라는 프로그램을 찾았는데 현재 사용하고 있는 xls(Office 2003) 파일만 변환되지만 새로운 Excel 파일에 대한 지원이 필요합니다.
좋은 생각 있어요?
Gnumeric 스프레드시트 응용 프로그램에는 다양한 스프레드시트 형식을 변환할 수 있는 ssconvert라는 명령줄 유틸리티가 포함되어 있습니다.
$ ssconvert Book1.xlsx newfile.csv
Using exporter Gnumeric_stf:stf_csv
$ cat newfile.csv
Foo,Bar,Baz
1,2,3
123.6,7.89,
2012/05/14,,
The,last,Line
Ubuntu에 설치하려면:
apt-get install gnumeric
Mac에 설치하려면:
brew install gnumeric
Libre Office를 사용하면 다음과 같이 할 수 있습니다.
libreoffice --headless --convert-to csv $filename --outdir $outdir
제가 알기 어려운 이유로 sudo와 함께 실행하셔야 할 수도 있습니다.다음 행을 sudoers 파일에 추가하면 패스워드를 필요로 하지 않고 Libre Office를 sudo와 연동시킬 수 있습니다.
users ALL=(ALL) NOPASSWD: libreoffice
이미 데스크톱 환경을 사용하고 있다면 Gnumeric 또는 LibreOffice가 잘 동작할 것이라고 확신합니다만, 헤드리스 서버(클라우드 기반 환경 등)에서는 수십 개의 의존관계가 필요합니다.
대체 Python을 찾았습니다.xlsx2csv
easy_install xlsx2csv
xlsx2csv file.xlsx > newfile.csv
설치하는 데 2초가 걸렸고 아주 잘 작동합니다.
여러 개의 시트가 있는 경우 한 번에 모두 내보내거나 한 번에 하나씩 내보낼 수 있습니다.
xlsx2csv file.xlsx --all > all.csv
xlsx2csv file.xlsx --all -p '' > all-no-delimiter.csv
xlsx2csv file.xlsx -s 1 > sheet1.csv
그는 또한 Bash, Python, Ruby 및 Java에 구축된 여러 대안에도 링크합니다.
csvkit 사용:
in2csv data.xlsx > data.csv
상세한 것에 대하여는, 뛰어난 메뉴얼을 참조해 주세요.
Bash에서는 이 LibreOffice 명령어(실행 파일)를 사용했습니다.libreoffice) 현재 디렉토리에 있는 모든 .xlsx 파일을 변환하려면 다음 절차를 수행합니다.
for i in *.xlsx; do libreoffice --headless --convert-to csv "$i" ; done
실행하기 전에 LibreOffice의 모든 열린 인스턴스를 닫으십시오.그렇지 않으면 자동으로 실패합니다.
이 명령어는 파일 이름 내의 공백을 처리합니다.
몇 년 후에 다시 시도했지만 효과가 없었어요.이 질문을 통해 몇 가지 힌트를 얻을 수 있지만 가장 빠른 해결책은 루트로 실행하는 것(또는sudo libreoffice)는 우아하지 않지만 빠르다.
윈도우즈에서 scalc.exe 명령을 사용합니다.
또 다른 옵션은 편의를 위해 작은 Bash 래퍼를 통해 R을 사용하는 것입니다.
xlsx2txt(){
echo '
require(xlsx)
write.table(read.xlsx2(commandArgs(TRUE)[1], 1), stdout(), quote=F, row.names=FALSE, col.names=T, sep="\t")
' | Rscript --vanilla - $1 2>/dev/null
}
xlsx2txt file.xlsx > file.txt
이 경우,.xlsx파일에는 많은 시트가 있습니다.-s플래그를 사용하여 원하는 시트를 얻을 수 있습니다.예를 들어 다음과 같습니다.
xlsx2csv "my_file.xlsx" -s 2 second_sheet.csv
second_sheet.csv에 두 번째 시트의 데이터를 포함할 수 있습니다.my_file.xlsx.
ssconvert라는 명령줄 유틸리티가 제공하는 Gnumeric 스프레드시트 응용 프로그램을 사용하는 것은 매우 간단합니다.
find . -name '*.xlsx' -exec ssconvert -T Gnumeric_stf:stf_csv {} \;
그럼 끝이야!
Java 명령줄을 실행해도 괜찮다면 Apache POI HSSF의 Excel Extractor를 사용하여 실행할 수 있습니다.명령줄 추출기라고 하는 메서드가 있습니다.이건 그냥 다 버리는 것 같아.이들은 가 CSV로 변환되는 이 예를 지적하고 있습니다.실행하기 전에 컴파일을 해야 하는데 컴파일도 되어 있습니다.main그 때문에, 동작시키기 위해서 코드화를 많이 할 필요는 없습니다.
다른 한쪽에서 작업해야 하는 다른 옵션은 Excel 파일을 Excel XML 데이터 또는 현재 MS에서 호출하는 형식의 XML 스프레드시트로 제공하는 것입니다.그것은 당신이 원하는 방식으로 잘라내고 주사위를 던질 수 있는 완전히 새로운 기회의 세계를 열 것입니다.
파일을 사용할 수 .libreoffice을 csvxlsx "csv"로 절차를 합니다.
libreoffice --headless --convert-to csv ABC.xlsx
인수 --headless는 GUI가 필요하지 않음을 나타냅니다.
말하듯이 가능 파일libreoffice는 Excel 파일(.xls)을 CSV로 변환할 수 있습니다.저에게 있어서 문제는 시트 선택이었습니다.
이 LibreOffice Python 스크립트는 단일 시트를 CSV로 변환하는 데 매우 적합합니다.
사용방법:
./libreconverter.py File.xls:"Sheet Name" output.csv
한 가지 단점은 (내 이라는 것이다--headless효과가 없는 것 같습니다.Libre Office li li li li li li li li li li li li li 。
저는 괜찮습니다.그것은 작업을 신속하게 할 수 있는 유일한 도구입니다.
스크립트 getsheets.py 를 사용할 수 있습니다.먼저 종속성 추가:
pip3 install pandas xlrd openpyxl
그럼 대본을 .python3 getsheets.py <file.xlsx>
언급URL : https://stackoverflow.com/questions/10557360/convert-xlsx-to-csv-in-linux-with-command-line
'codememo' 카테고리의 다른 글
| Xcode에서 프로비저닝프로파일을 삭제하는 방법 (0) | 2023.04.23 |
|---|---|
| Bash의 3진 연산자(?:) (0) | 2023.04.23 |
| 푸른색 저장 위치에 하위 컨테이너를 생성하는 방법 (0) | 2023.04.23 |
| 명령줄에서 'git commit - m'에 줄 바꿈 추가 (0) | 2023.04.23 |
| 커스텀 셀 없이 UITableViewCell로 텍스트를 줄바꿈하는 방법 (0) | 2023.04.18 |