UPDATE: Adds python bindings (#90)

* UPDATE: Adds python bindings

Exclude pyroncalc and wasm from test coverage
This commit is contained in:
Nicolás Hatcher Andrés
2024-09-21 11:58:50 +02:00
committed by GitHub
parent 00b5b65588
commit 11df4a55c7
18 changed files with 2049 additions and 14 deletions

View File

@@ -22,5 +22,5 @@ fn main() {
let base_name = file_path.file_stem().unwrap().to_str().unwrap();
let output_file_name = &format!("{base_name}.ic");
let model = load_from_xlsx(file_name, "en", "UTC").unwrap();
save_to_icalc(model.workbook, output_file_name);
save_to_icalc(&model, output_file_name).unwrap();
}

View File

@@ -107,7 +107,7 @@ pub fn save_xlsx_to_writer<W: Write + Seek>(model: &Model, writer: W) -> Result<
zip.add_directory("xl/worksheets", options)?;
for (sheet_index, worksheet) in workbook.worksheets.iter().enumerate() {
let id = sheet_index + 1;
zip.start_file(&format!("xl/worksheets/sheet{id}.xml"), options)?;
zip.start_file(format!("xl/worksheets/sheet{id}.xml"), options)?;
let dimension = model
.workbook
.worksheet(sheet_index as u32)
@@ -134,10 +134,15 @@ pub fn save_xlsx_to_writer<W: Write + Seek>(model: &Model, writer: W) -> Result<
Ok(writer)
}
/// Exports an internal representation of a workbook into an equivalent IronCalc json format
pub fn save_to_icalc(workbook: Workbook, output: &str) {
let s = bitcode::encode(&workbook);
let file_path = std::path::Path::new(output);
let mut file = fs::File::create(file_path).unwrap();
file.write_all(&s).unwrap();
/// Exports a model to an icalc file
pub fn save_to_icalc(model: &Model, file_name: &str) -> Result<(), XlsxError> {
let file_path = std::path::Path::new(&file_name);
if file_path.exists() {
return Err(XlsxError::IO(format!("file {} already exists", file_name)));
}
let s = bitcode::encode(&model.workbook);
let mut file = fs::File::create(file_path)?;
file.write_all(&s)?;
Ok(())
}

View File

@@ -64,7 +64,7 @@ fn test_values() {
}
{
let temp_file_name = "temp_file_test_values.ic";
save_to_icalc(model.workbook, temp_file_name);
save_to_icalc(&model, temp_file_name).unwrap();
let model = load_from_icalc(temp_file_name).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 1, 1).unwrap(), "123.456");