From 3fadc455e2568f272274a85691941dc10ae9b9c0 Mon Sep 17 00:00:00 2001 From: Jose Miguel Platero Date: Tue, 19 Aug 2025 09:50:28 +0200 Subject: [PATCH 1/3] Update archive dependency to 4.0 --- CHANGELOG.md | 3 +++ lib/src/ods.dart | 4 ++-- lib/src/spreadsheet.dart | 12 ++++++------ lib/src/xlsx.dart | 6 +++--- pubspec.yaml | 12 ++++++------ tool/archive.dart | 9 +++++---- 6 files changed, 25 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 465d8b3..2edd3a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 3.0.0 +Update archive to 4.0.0 + ## 2.3.0 Update dependencies diff --git a/lib/src/ods.dart b/lib/src/ods.dart index 261b736..2848984 100644 --- a/lib/src/ods.dart +++ b/lib/src/ods.dart @@ -97,7 +97,7 @@ class OdsDecoder extends SpreadsheetDecoder { void _parseContent() { var file = _archive.findFile(contentXML); file?.decompress(); - var content = XmlDocument.parse(utf8.decode(file?.content)); + var content = XmlDocument.parse(utf8.decode(file?.content.toList() ?? [])); if (_update == true) { _archiveFiles = {}; _sheets = {}; @@ -222,7 +222,7 @@ class OdsDecoder extends SpreadsheetDecoder { if (child is XmlElement) { buffer.write(_normalizeNewLine(_readString(child))); } else if (child is XmlText) { - buffer.write(_normalizeNewLine(child.text)); + buffer.write(_normalizeNewLine(child.value)); } } diff --git a/lib/src/spreadsheet.dart b/lib/src/spreadsheet.dart index 0316ad1..d5ee6d6 100644 --- a/lib/src/spreadsheet.dart +++ b/lib/src/spreadsheet.dart @@ -69,9 +69,9 @@ abstract class SpreadsheetDecoder { return _newSpreadsheetDecoder(archive, update); } - factory SpreadsheetDecoder.decodeBuffer(InputStreamBase input, + factory SpreadsheetDecoder.decodeBuffer(InputStream input, {bool update = false, bool verify = false}) { - var archive = ZipDecoder().decodeBuffer(input, verify: verify); + var archive = ZipDecoder().decodeStream(input, verify: verify); return _newSpreadsheetDecoder(archive, update); } @@ -188,10 +188,10 @@ abstract class SpreadsheetDecoder { if (_archiveFiles.containsKey(file.name)) { copy = _archiveFiles[file.name]!; } else { - var content = file.content as Uint8List; - var compress = file.compress; - copy = ArchiveFile(file.name, content.length, content) - ..compress = compress; + var content = file.content; + copy = ArchiveFile(file.name, content.length, content); + copy.compression = file.compression; + copy.compressionLevel = file.compressionLevel; } clone.addFile(copy); } diff --git a/lib/src/xlsx.dart b/lib/src/xlsx.dart index 22421bd..ffd11ad 100644 --- a/lib/src/xlsx.dart +++ b/lib/src/xlsx.dart @@ -306,7 +306,7 @@ class XlsxDecoder extends SpreadsheetDecoder { void _parseContent() { var workbook = _archive.findFile('xl/workbook.xml'); workbook?.decompress(); - var document = XmlDocument.parse(utf8.decode(workbook?.content)); + var document = XmlDocument.parse(utf8.decode(workbook?.content.toList() ?? [])); document.findAllElements('sheet').forEach((node) { _parseTable(node); }); @@ -323,7 +323,7 @@ class XlsxDecoder extends SpreadsheetDecoder { var file = _archive.findFile(namePath); file?.decompress(); - var content = XmlDocument.parse(utf8.decode(file?.content)); + var content = XmlDocument.parse(utf8.decode(file?.content.toList() ?? [])); var worksheet = content.findElements('worksheet').first; var sheet = worksheet.findElements('sheetData').first; @@ -446,7 +446,7 @@ class XlsxDecoder extends SpreadsheetDecoder { for (var child in node.children) { if (child is XmlText) { - buffer.write(_normalizeNewLine(child.text)); + buffer.write(_normalizeNewLine(child.value)); } } diff --git a/pubspec.yaml b/pubspec.yaml index 0da5762..d9f64d9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,16 +1,16 @@ name: spreadsheet_decoder description: A lightweight library for parsing and updating spreadsheet documents -version: 2.3.0 +version: 3.0.0 homepage: https://github.com/sestegra/spreadsheet environment: sdk: "^3.0.0" dependencies: - archive: ^3.6.1 - xml: ^6.5.0 + archive: ^4.0.7 + xml: ^6.6.1 dev_dependencies: - path: ^1.9.0 - lints: ^4.0.0 - test: ^1.25.8 + path: ^1.9.1 + lints: ^6.0.0 + test: ^1.26.3 diff --git a/tool/archive.dart b/tool/archive.dart index 0b5eac0..c4a0997 100644 --- a/tool/archive.dart +++ b/tool/archive.dart @@ -7,9 +7,10 @@ Archive cloneArchive(Archive archive) { var clone = Archive(); for (var file in archive.files) { if (file.isFile) { - var content = file.content as Uint8List; - var copy = ArchiveFile(file.name, content.length, content) - ..compress = file.compress; + var content = file.content; + var copy = ArchiveFile(file.name, content.length, content); + copy.compression = file.compression; + copy.compressionLevel = file.compressionLevel; clone.addFile(copy); } } @@ -37,7 +38,7 @@ void main(List args) { print(input); var archive = ZipDecoder().decodeBytes(File(input).readAsBytesSync(), verify: true); - var zip = ZipEncoder().encode(cloneArchive(archive)) as List; + var zip = ZipEncoder().encode(cloneArchive(archive)); try { archive = ZipDecoder().decodeBytes(zip, verify: true); var file = File('test/out/example/${basename(input)}') From dbfab464eed31271b0519d8e3d8db9c706a135ce Mon Sep 17 00:00:00 2001 From: Jose Miguel Platero Date: Tue, 19 Aug 2025 09:51:51 +0200 Subject: [PATCH 2/3] remove unused dependency references --- lib/spreadsheet_decoder.dart | 1 - tool/archive.dart | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/spreadsheet_decoder.dart b/lib/spreadsheet_decoder.dart index 3c0b08e..b202527 100644 --- a/lib/spreadsheet_decoder.dart +++ b/lib/spreadsheet_decoder.dart @@ -1,7 +1,6 @@ library spreadsheet_decoder; import 'dart:convert'; -import 'dart:typed_data'; import 'package:archive/archive.dart'; import 'package:xml/xml.dart'; diff --git a/tool/archive.dart b/tool/archive.dart index c4a0997..a7cecd0 100644 --- a/tool/archive.dart +++ b/tool/archive.dart @@ -1,5 +1,4 @@ import 'dart:io'; -import 'dart:typed_data'; import 'package:archive/archive.dart'; import 'package:path/path.dart'; From 3f5a32af5566e2146e29c29312c5fe1de72f3a4b Mon Sep 17 00:00:00 2001 From: Jose Miguel Platero Date: Tue, 19 Aug 2025 09:52:19 +0200 Subject: [PATCH 3/3] remove unnecessary cast --- lib/src/spreadsheet.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/spreadsheet.dart b/lib/src/spreadsheet.dart index d5ee6d6..13e63de 100644 --- a/lib/src/spreadsheet.dart +++ b/lib/src/spreadsheet.dart @@ -169,7 +169,7 @@ abstract class SpreadsheetDecoder { var content = utf8.encode(xml); _archiveFiles[xmlFile] = ArchiveFile(xmlFile, content.length, content); } - return ZipEncoder().encode(_cloneArchive(_archive)) as List; + return ZipEncoder().encode(_cloneArchive(_archive)); } /// Encode data url