GUI 없이 Excel(xls) 파일을 쉼표로 구분된(csv) 파일로 변환
Excel 창 응용 프로그램을 시작하지 않고 XLS를 CSV 형식의 파일로 변환하는 간단한 방법이 있습니까?
스크립트가 포함된 Excel XLS 워크북을 처리해야 합니다.이를 위해 xls 파일을 csv 파일로 변환해야 합니다.이 작업은 Excel 응용 프로그램의 save-as를 사용하여 수행할 수 있습니다.하지만 저는 이것을 자동화하고 싶습니다(따라서 엑셀 애플리케이션 창을 열지 않습니다).
워크북의 첫 번째 시트를 CSV 형식으로 변환하면 충분합니다.저는 그 시트의 데이터만 처리하면 됩니다.
제 시스템에 Cygwin과 Excel이 설치되어 있습니다. 도움이 된다면요.
편집: 네, Perl로 작동하는 솔루션이 있습니다.다른 사용자가 나중에 사용할 수 있도록 업데이트합니다.
스프레드시트를 설치했습니다.:Excel 모듈을 구문 분석한 다음 read-excel.pl 샘플을 사용합니다.
제 코드는 아래와 같이 이 샘플 코드를 약간 변형한 것입니다.
#!/usr/bin/perl -w
# For each tab (worksheet) in a file (workbook),
# spit out columns separated by ",",
# and rows separated by c/r.
use Spreadsheet::ParseExcel;
use strict;
my $filename = shift || "Book1.xls";
my $e = new Spreadsheet::ParseExcel;
my $eBook = $e->Parse($filename);
my $sheets = $eBook->{SheetCount};
my ($eSheet, $sheetName);
foreach my $sheet (0 .. $sheets - 1) {
$eSheet = $eBook->{Worksheet}[$sheet];
$sheetName = $eSheet->{Name};
print "#Worksheet $sheet: $sheetName\n";
next unless (exists ($eSheet->{MaxRow}) and (exists ($eSheet->{MaxCol})));
foreach my $row ($eSheet->{MinRow} .. $eSheet->{MaxRow}) {
foreach my $column ($eSheet->{MinCol} .. $eSheet->{MaxCol}) {
if (defined $eSheet->{Cells}[$row][$column])
{
print $eSheet->{Cells}[$row][$column]->Value . ",";
} else {
print ",";
}
}
print "\n";
}
}
업데이트: 이 MSDN 블로그 및 SO 레퍼런스에서 현재 상태로 작업할 수 있는 Powershell 스크립트가 있습니다.
$excel = New-Object -comobject Excel.Application
$workbooks = $excel.Workbooks.Open("C:\test.xlsx")
$worksheets = $workbooks.Worksheets
$worksheet = $worksheets.Item(1)
$range = $worksheet.UsedRange
foreach($row in $range.Rows)
{
foreach($col in $row.Columns)
{
echo $col.Text
}
}
업데이트: 최근에 이 Superuser 답변에서 CSV로 표시된 Windows 툴을 발견했는데, 이 툴은 일부 사용자에게 유용할 수 있습니다.
데비안/우분투에 있는 경우 catdoc 패키지에서 xls2csv를 사용할 수 있습니다.
자바 세계에서는 아파치 포이를 사용할 수 있습니다.다음 그루비 스니펫에서 시작할 수 있습니다.
FileInputStream fis = new FileInputStream(filename);
Workbook wb = new HSSFWorkbook(fis);
Sheet sheet = wb.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
doSomething(cell.toString())
}
}
Gnumeric 문서에서:
Gnumeric은 사용자 개입 없이 파일을 자동으로 변환할 수 있습니다.이를 통해 스크립트를 사용하여 많은 수의 파일을 변환할 수 있습니다.은 Gnumeric이라는 프로그램과 됩니다.
ssconvert
파일을 자동으로 변환하는 데 사용되는 프로그램입니다.Gnumeric에서 지원하는 모든 파일 형식은 인쇄 시스템을 통해 작동하는 Postscript 및 PDF 파일 형식을 제외하고 사용할 수 있습니다.이 응용 프로그램은 원하는 옵션, 입력 파일 및 출력 파일을 지정하여 명령줄에서 사용됩니다.예를들면,
ssconvert myfile.xls myfile.gnumeric
Excel 형식 파일을 G숫자 형식 파일로 변환합니다.
ssconvert가 읽을 수 있는 사용 가능한 가져오기 및 내보내기 파일 형식은 다음을 사용하여 나열할 수 있습니다.
ssconvert --list-importers
또는
ssconvert --list-exporters
각각 다음과 같다.
다른 GNU 명령줄 응용 프로그램과 마찬가지로 ssconvert에는 수동 페이지가 포함되어 있습니다.다음을 입력하여 이 페이지에 액세스할 수 있습니다.
man ssconvert
메뉴얼 페이지가 열립니다.스페이스 바를 입력하거나 페이지 위로 및 페이지 아래로 단추를 사용하여 이 페이지를 탐색할 수 있습니다.맨 프로그램은 q 키를 입력하여 해제할 수 있습니다.
저는 그것을 사용하고 있고 잘 작동합니다.
Perl 스크립트를 사용합니다.스프레드시트 사용:CPAN에서 Excel perl 모듈을 구문 분석하여 xls 파일을 구문 분석한 후 csv가 정상적으로 작동할 것이므로 출력을 구문 분석합니다.
http://search.cpan.org/dist/Spreadsheet-ParseExcel
VBScript를 사용해 볼 수도 있습니다.
휴대용 [Python] 라이브러리 중 하나를 사용합니다.
파이xl 판독기sourceforge.net/
sourceforge.net/projects/pyexcelerator
그 위에 스크립트 레이어를 추가로 만듭니다.
Excel은 데이터 소스로 사용할 수 있으며 데이터베이스로 Excel에 액세스할 수 있는 드라이버가 있습니다.
1.) CSV로 변환할 EXCEL 파일에 대한 연결을 만들고 엽니다.
2.) "SELECT * Sheet1에서"와 같은 쿼리를 실행하면 Sheet1의 모든 데이터가 레코드 세트 또는 데이터 테이블에 로드됩니다.
3.) .net을 사용하고 있기 때문에 데이터 테이블에 레코드를 저장하고 다음 확장 방법을 사용하여 CSV로 변환할 수 있습니다.
public static string ToCSV(this DataTable _dataTable)
{
StringBuilder csv = new StringBuilder();
StringWriter sw = new StringWriter(csv);
int icolcount = _dataTable.Columns.Count;
for (int i = 0; i < icolcount; i++)
{
sw.Write(_dataTable.Columns[i]);
if (i < icolcount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
foreach (DataRow drow in _dataTable.Rows)
{
for (int i = 0; i < icolcount; i++)
{
if (!Convert.IsDBNull(drow[i]))
{
sw.Write(drow[i].ToString());
}
if (i < icolcount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
}
sw.Close();
return csv.ToString();
}
작업 중인 플랫폼에서 이 접근 방식을 적용할 수 있습니다.
감사해요.
VBS 스크립트와 그것은 멋진 작동을 합니다. http://www.go4expert.com/forums/showthread.php?t=18188
objArgs = WScript를 설정합니다.I = 0 to objArgs에 대한 인수입니다.카운트 - 1
FullName = objArgs(I)
FileName = Left(objArgs(I), InstrRev(objArgs(I), ".") )
Set objExcel = CreateObject("Excel.application")
set objExcelBook = objExcel.Workbooks.Open(FullName)
objExcel.application.visible=false
objExcel.application.displayalerts=false
objExcelBook.SaveAs FileName & "csv", 23
objExcel.Application.Quit
objExcel.Quit
Set objExcel = Nothing
set objExcelBook = Nothing
다음 분.
XLS 변환 권장: http://www.softinterface.com/Convert-XLS%5CConvert-XLS.htm
'Convert XLS'는 Excel, 텍스트 및 CSV(문자/콤마 구분) 파일을 위해 특별히 설계된 사용하기 쉽지만 정교한 Excel 변환기 유틸리티입니다.하나 이상의 폴더에 위치한 하나 또는 수천 개의 파일을 변환/조작해야 하는 경우 이 도구가 바로 이 도구입니다!MS Excel 없이도 10-15배 더 빠르게 변환할 수 있습니다.
다음을 사용하여 Excel 변환 작업을 자동화합니다.
- 내장 스케줄러
- 명령줄
- 인터페이스 COM 인터페이스
만약 당신이 Cygwin을 가지고 있다면, 아마도 당신은 Python을 가지고 있을 것입니다.그렇지 않은 경우 - python을 설치하고 이 스크립트를 사용합니다.필요한 것보다 훨씬 많지만 쉽고 빠르게 변환할 수 있습니다.
John Machin:저는 이 포럼의 신입이기 때문에 의견을 추가할 수 없습니다 :)
저는 오래된 패키지 pyXLreader를 사용하지 않았지만 xlrd를 염두에 두고 게시물을 작성했습니다;)
저는 그것을 한 달 전에 보았지만 프로젝트에 사용되지 않았습니다.
WBR
저는 이 포럼들에 꽤 새로 왔고, 만약 그들이 타임스탬프(petepe)에 연도를 올려놓는다면 좋을 것입니다. 그래서 저는 게시물이 얼마나 오래되었는지 압니다. 저는 그것들이 2009년부터라고 가정할 것입니다.
하지만 파이썬에서 좋은 해결책은 xlrd를 사용하여 xls 파일을 읽는 것입니다.여기 꽤 간단한 입문서가 있습니다: http://scienceoss.com/read-excel-files-from-python/ 그건 제 것이 아닙니다.
내가 가진 유일한 문제는 엑셀 데이트였습니다.여기 그들을 위한 빠른 해결책이 있습니다.
date = xlrd.xlddate_as_module(int( sheet.cell(행 번호, colNum).value), workBookName.date 모드)
내장된 csv 모듈로 csv 파일을 만드는 것보다, 나는 새로운 사용자이기 때문에 하이퍼링크를 하나만 올릴 수 있지만, csv 모듈 api를 구글에 검색합니다.
그것이 도움이 되었기를 바랍니다.
내 해결책:
use Spreadsheet::BasicRead;
my $xls = 'file.xls';
my $csv = 'file.csv';
my $ss = new Spreadsheet::BasicRead($xls) or die "Could not open '$xls': $!";
my $name = '';
my $row = 0;
open(FILE, ">$csv") or die "Could not open : $!\n";
flock(FILE, 2) or die "Could not lock file\n";
while (my $data = $ss->getNextRow()){
$row++;
$name = join(';',@$data);
print FILE $name."\n" if ($name ne "");
}
flock(FILE, 8);
close FILE;
Alasql 데이터베이스에 대한 Alacon - 명령줄 유틸리티를 사용하여 이 작업을 수행할 수 있습니다.
Node.js와 함께 작동하므로 Node.js를 설치한 다음 Alasql 패키지를 설치해야 합니다.
> npm install alasql
Excel 파일을 TSV가 아닌 CVS로 변환하려면 다음을 입력합니다.
> node alacon "SELECT * INTO CSV('mydata.csv', {headers:true}) FROM XLS('mydata.xls', {headers:true})"
Alacon은 다른 유형의 변환(CSV, TSV, TXT, XLSX, XLS) 및 SQL 언어 구성을 지원합니다(예: 사용 설명서 참조).
언급URL : https://stackoverflow.com/questions/943153/converting-an-excel-xls-file-to-a-comma-separated-csv-file-without-the-gui
'programing' 카테고리의 다른 글
TypeScript의 콘솔 입력 (0) | 2023.06.18 |
---|---|
데이터 프레임에서 변수가 많은 공식을 간단하게 작성하는 방법은 무엇입니까? (0) | 2023.06.18 |
Duplicate User Form in Excel VBA (0) | 2023.06.18 |
MySQL: 다른 테이블의 값에서 테이블의 기존 데이터 "패치" (0) | 2023.06.18 |
int*i와 int*i의 차이 (0) | 2023.06.18 |