added missing api functions for get_cell*

This commit is contained in:
Andrew Grosser
2024-12-04 11:08:22 -08:00
committed by Nicolás Hatcher Andrés
parent d9dbd3bf14
commit 1734fd5740
2 changed files with 57 additions and 1 deletions

View File

@@ -10,6 +10,8 @@ use xlsx::import;
mod types; mod types;
use crate::types::PyCellType;
create_exception!(_ironcalc, WorkbookError, PyException); create_exception!(_ironcalc, WorkbookError, PyException);
/// This is a model implementing the 'raw' API /// This is a model implementing the 'raw' API
@@ -58,6 +60,21 @@ impl PyModel {
// Get values // Get values
/// Get raw value
pub fn get_cell_content(&self, sheet: u32, row: i32, column: i32) -> PyResult<String> {
self.model
.get_cell_content(sheet, row, column)
.map_err(|e| WorkbookError::new_err(e.to_string()))
}
/// Get cell type
pub fn get_cell_type(&self, sheet: u32, row: i32, column: i32) -> PyResult<PyCellType> {
self.model
.get_cell_type(sheet, row, column)
.map(|cell_type| cell_type.into())
.map_err(|e| WorkbookError::new_err(e.to_string()))
}
/// Get formatted value /// Get formatted value
pub fn get_formatted_cell_value(&self, sheet: u32, row: i32, column: i32) -> PyResult<String> { pub fn get_formatted_cell_value(&self, sheet: u32, row: i32, column: i32) -> PyResult<String> {
self.model self.model

View File

@@ -1,6 +1,6 @@
use pyo3::prelude::*; use pyo3::prelude::*;
use xlsx::base::types::{ use xlsx::base::types::{
Alignment, Border, BorderItem, BorderStyle, Fill, Font, FontScheme, HorizontalAlignment, Style, Alignment, Border, BorderItem, BorderStyle, Fill, Font, FontScheme, HorizontalAlignment, Style, CellType,
VerticalAlignment, VerticalAlignment,
}; };
@@ -161,6 +161,17 @@ pub struct PyFill {
pub bg_color: Option<String>, pub bg_color: Option<String>,
} }
#[pyclass(eq, eq_int)]
#[derive(PartialEq, Clone)]
pub enum PyCellType {
Number = 1,
Text = 2,
LogicalValue = 4,
ErrorValue = 16,
Array = 64,
CompoundData = 128,
}
// Conversions from references to Py* types to non-Py types // Conversions from references to Py* types to non-Py types
// Enums // Enums
@@ -426,3 +437,31 @@ impl From<Style> for PyStyle {
} }
} }
} }
// Conversion from PyCellType to CellType
impl From<PyCellType> for CellType {
fn from(py_cell_type: PyCellType) -> Self {
match py_cell_type {
PyCellType::Number => CellType::Number,
PyCellType::Text => CellType::Text,
PyCellType::LogicalValue => CellType::LogicalValue,
PyCellType::ErrorValue => CellType::ErrorValue,
PyCellType::Array => CellType::Array,
PyCellType::CompoundData => CellType::CompoundData,
}
}
}
// Conversion from CellType to PyCellType
impl From<CellType> for PyCellType {
fn from(cell_type: CellType) -> Self {
match cell_type {
CellType::Number => PyCellType::Number,
CellType::Text => PyCellType::Text,
CellType::LogicalValue => PyCellType::LogicalValue,
CellType::ErrorValue => PyCellType::ErrorValue,
CellType::Array => PyCellType::Array,
CellType::CompoundData => PyCellType::CompoundData,
}
}
}