2016-12-15 49 views
2

解凍したxlsxファイルがあります。新しいデータを含む新しいxlsxファイルを生成できるようにファイルを編集します。私はちょうどターミナルに入るとのxlsxファイルがあるフォルダにnode.js(Electron)を使用して圧縮されていないxlsxファイルを圧縮

find . -type f | xargs zip ../newfile.xlsx

を入力する必要がXLSX内のファイルを再圧縮するために、Linuxで 。 ここで、node.jsを使ってどうすればいいですか?

答えて

2

ソリューションは、我々は、ファイルが破損しているフォルダを圧縮しようとした場合、何らかの理由で、XLSXに含まれるファイルの直接の一覧を圧縮することです。あなたはJSZIPが

var fs = require('fs'); 
var JSZip = require("jszip"); 
var zip = new JSZip(); 
var file = []; 
file.push("_rels/.rels"); 
file.push("docProps/core.xml"); 
file.push("docProps/app.xml"); 
file.push("docProps/custom.xml"); 
file.push("[Content_Types].xml"); 
file.push("xl/_rels/workbook.xml.rels"); 
file.push("xl/styles.xml"); 
file.push("xl/pivotTables/_rels/pivotTable3.xml.rels"); 
file.push("xl/pivotTables/_rels/pivotTable1.xml.rels"); 
file.push("xl/pivotTables/_rels/pivotTable2.xml.rels"); 
file.push("xl/pivotTables/pivotTable3.xml"); 
file.push("xl/pivotTables/pivotTable1.xml"); 
file.push("xl/pivotTables/pivotTable2.xml"); 
file.push("xl/workbook.xml"); 
file.push("xl/worksheets/_rels/sheet2.xml.rels"); 
file.push("xl/worksheets/_rels/sheet1.xml.rels"); 
file.push("xl/worksheets/_rels/sheet3.xml.rels"); 
file.push("xl/worksheets/sheet4.xml"); 
file.push("xl/worksheets/sheet1.xml"); 
file.push("xl/worksheets/sheet3.xml"); 
file.push("xl/worksheets/sheet2.xml"); 
file.push("xl/sharedStrings.xml"); 
file.push("xl/pivotCache/_rels/pivotCacheDefinition1.xml.rels"); 
file.push("xl/pivotCache/pivotCacheDefinition1.xml"); 
file.push("xl/pivotCache/pivotCacheRecords1.xml"); 

for (var i = 0; i < file.length; i++) { 
    zip.file(file[i], fs.readFileSync("/home/user/xlsx_FILES/"+file[i])); 
} 

zip.generateAsync({type:"blob"}).then(function(content) { 
    // see FileSaver.js 
    saveAs(content, "yourfile.xlsx"); 
}); 
1

nodejsの圧縮ライブラリであるarchiverを見てください。彼らは包括的であるように図書館のためのdocsは見える。ライブラリを使用すると、アーカイブを追加し、新しいアーカイブを追加して作成するためのAPIをストリーミングすることもできます。

以下は、ドキュメントのスニペットで、ライブラリの使用方法を示しています。

// require modules 
var fs = require('fs'); 
var archiver = require('archiver'); 

// create a file to stream archive data to. 
var output = fs.createWriteStream(__dirname + '/example.zip'); 
var archive = archiver('zip', { 
    store: true // Sets the compression method to STORE. 
}); 

// listen for all archive data to be written 
output.on('close', function() { 
    console.log(archive.pointer() + ' total bytes'); 
    console.log('archiver has been finalized and the output file descriptor has closed.'); 
}); 

// good practice to catch this error explicitly 
archive.on('error', function(err) { 
    throw err; 
}); 

// pipe archive data to the file 
archive.pipe(output); 
+0

それは大量の圧縮に適しています使用している場合が、破損したファイルをXLSXに戻って圧縮しようとしたとき

のコードは次のようになります。 –

+0

私はなぜだろうか? OPにコードを追加できますか? –

+0

解決策を見つけました。私は答えとして投稿しました。 –

関連する問題