내 소프트웨어의 일부는 다양한 파일 형식을 열고 보는 다양한 명령을 실행합니다. 예를 들어 atril
PDF와 PNG를 사용합니다 eom
.
하지만 CSV 파일에 작은 문제가 있습니다. 열 수는 있지만 soffice –calc <filepath>
가져오기 단계를 거칠 때마다요.
형식이 일관되고 포함해야 하는 유일한 구분 기호는 쉼표뿐이므로 사용자 문제의 위험을 피하기 위해 이를 방지할 수 있는 방법이 있습니까 ,?
미리 감사드립니다.
답변1
가져오기를 건너뛰는 방법은 파일을 가져오지 않고도 읽을 수 있는 형식으로 변환하는 것입니다. 예를 들면 다음과 같습니다.
soffice --headless --convert-to ods --outdir /tmp tblIssues.csv
soffice --view /tmp/tblIssues.ods
rm /tmp/tblIssues.ods
그러면 파일이 tblIssues.csv
ODS 스프레드시트로 변환되어 저장 /tmp
되고 Libreoffice에서 열립니다. 완료되면 변환된 파일이 삭제됩니다(선택 사항).
이 --view
옵션은 파일을 읽기 전용으로 열고 편집에 필요한 GUI 요소를 숨겨 LibreOffice를 뷰어로 더욱 유용하게 만듭니다.
PDF( )와 같은 다른 형식을 사용한 --convert-to pdf
다음 와 같은 다른 뷰어를 사용할 수도 있습니다 atril
.
libreoffice Convert 명령은 임포터에서 사용자가 마지막으로 사용한 설정을 사용할 수도 있기 때문에, ,
그 이외의 구분 기호를 사용하도록 설정하면 작동하지 않을 수도 있다는 점 참고하시기 바랍니다.
또는 다음과 같이 명령을 수정할 수 있습니다.
숨겨진 출력:
COMMAND > /dev/null 2>&1
터미널과 분리:
COMMAND & disown
답변2
unoconv 설치(한 번만)
- 우분투에서 실행
sudo apt-get install unoconv
- RHL/CentOS에서 실행
sudo yum install unoconv
- 우분투에서 실행
명령줄 또는 배치 모드에서 변환(비대화형)
- unoconv -f pdf /pathto/file.csv /pathto/file.pdf 2>/dev/null
그게 다야!
노트:
변환이 실패한 것처럼 "보이는" 오류가 발생하기 때문에 stderr를 /dev/null로 파이핑하고 있지만 실제로는 성공했습니다. unoconv -f csv /tmp/this.csv /tmp/this.pdf
오류 출력을 실행하면 다음과 같습니다 .
unoconv: UnoException during export phase: Unable to store document to file:///tmp/this.pdf (ErrCode 19468)
그러나 파일은 실제로 /tmp/this.pdf에 생성되었으며 PDF 뷰어를 통해 파일이 완벽하다는 것을 확인했습니다.
이유는 모르겠지만 실행 중인 리스너가 없기 때문에 오류가 발생한 것으로 추측됩니다. 아마도 여기 다른 누군가가 이 문제를 해결할 것입니다 ;-)
어쨌든 변환에서 종료 0을 반환해야 하는 경우(예: Puppet 또는 Chef가 필요할 수 있음) 다음과 같이 변환을 실행하세요.
unoconv -f pdf /pathto/file.csv /pathto/file.pdf 2>/dev/null || /bin/true
마지막으로 unoconv csv 변환은 기본적으로 "쉼표로 구분"되어 있는데, 이는 운 좋게도 작동합니다. 서로 다른 구분 기호 및/또는 여러 구분 기호를 사용하려면 매뉴얼 페이지를 읽고 가져오기 필터 옵션을 확인하세요.