Skip to content

Commit

Permalink
worksheet: fix set_row() and set_default_row() interaction
Browse files Browse the repository at this point in the history
Fix an issue where set_row() with the default height of 15 was
ignored if set_default_row() was also used.
  • Loading branch information
jmcnamara committed Jan 23, 2025
1 parent 9aea2eb commit 7251dd5
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/worksheet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16927,15 +16927,23 @@ impl Worksheet {
attributes.push(("customFormat", "1".to_string()));
}

if row_options.height != DEFAULT_ROW_HEIGHT {
// Only add ht parameter if the height is non-default.
if row_options.height != DEFAULT_ROW_HEIGHT
|| (row_options.height == DEFAULT_ROW_HEIGHT
&& self.user_default_row_height != DEFAULT_ROW_HEIGHT)
{
attributes.push(("ht", row_options.height.to_string()));
}

if row_options.hidden {
attributes.push(("hidden", "1".to_string()));
}

if row_options.height != DEFAULT_ROW_HEIGHT {
// Only add customHeight parameter if the height is non-default.
if row_options.height != DEFAULT_ROW_HEIGHT
|| (row_options.height == DEFAULT_ROW_HEIGHT
&& self.user_default_row_height != DEFAULT_ROW_HEIGHT)
{
attributes.push(("customHeight", "1".to_string()));
}
} else if self.user_default_row_height != DEFAULT_ROW_HEIGHT {
Expand Down
Binary file added tests/input/default_row06.xlsx
Binary file not shown.
37 changes: 37 additions & 0 deletions tests/integration/default_row06.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Test case that compares a file generated by rust_xlsxwriter with a file
// created by Excel.
//
// SPDX-License-Identifier: MIT OR Apache-2.0
//
// Copyright 2022-2025, John McNamara, [email protected]

use crate::common;
use rust_xlsxwriter::{Workbook, XlsxError};

// Create rust_xlsxwriter file to compare against Excel file.
fn create_new_xlsx_file(filename: &str) -> Result<(), XlsxError> {
let mut workbook = Workbook::new();

let worksheet = workbook.add_worksheet();

worksheet.set_default_row_height(24);
worksheet.set_row_height(4, 15)?;

worksheet.write(0, 0, "Foo")?;
worksheet.write(9, 0, "Bar")?;

workbook.save(filename)?;

Ok(())
}

#[test]
fn test_default_row06() {
let test_runner = common::TestRunner::new()
.set_name("default_row06")
.set_function(create_new_xlsx_file)
.initialize();

test_runner.assert_eq();
test_runner.cleanup();
}
1 change: 1 addition & 0 deletions tests/integration/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,7 @@ mod default_row02;
mod default_row03;
mod default_row04;
mod default_row05;
mod default_row06;
mod defined_name01;
mod defined_name02;
mod defined_name03;
Expand Down

0 comments on commit 7251dd5

Please sign in to comment.