Skip to content

Refactored column width writing logic#930

Merged
michelebastione merged 1 commit intomini-software:masterfrom
michelebastione:cell-width-optimization
Mar 8, 2026
Merged

Refactored column width writing logic#930
michelebastione merged 1 commit intomini-software:masterfrom
michelebastione:cell-width-optimization

Conversation

@michelebastione
Copy link
Contributor

@michelebastione michelebastione commented Mar 8, 2026

Refactored column writing logic to correctly default to a cell width of 8.43 characters (64px) and also take into account the 5px padding to add to the xml value which previously resulted in a discrepancy with the value displayed in the UI.
Resolves #367

Refactored cell writing logic to correctly default to a cell width of 8.43 characters (64px)  and also take into account the 5px padding to add to the xml value which previously resulted in a discrepancy with the value displayed in the UI.
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the column width calculation and application logic within the MiniExcel library. The primary goal is to ensure that generated Excel files accurately reflect column widths as displayed in the UI, addressing previous discrepancies related to default cell width and padding. The changes introduce a more robust system for managing column dimensions, improving the visual consistency and correctness of exported data.

Highlights

  • Refactored Column Width Logic: Replaced the legacy ExcelWidthCollection with new ExcelColumnWidthCollection and ExcelColumnWidth classes to provide more accurate column width calculations, incorporating proper padding for visual consistency.
  • Default Width Adjustment: Updated the default column width values in MiniExcelColumnAttribute and OpenXmlConfiguration to 8.42857143, which correctly reflects a cell width of 8.43 characters (64px) with 5px padding, resolving previous UI discrepancies.
  • Improved Space Preservation: Modified the logic for detecting leading or trailing spaces in cell values within OpenXmlWriter.cs to ensure their correct preservation in the generated XML output.
  • Test Updates: Adjusted existing auto-adjust width tests to align with the new column width calculation logic and updated test data handling and configuration.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • src/MiniExcel.Core/Attributes/MiniExcelColumnAttribute.cs
    • Updated the default column width value.
  • src/MiniExcel.OpenXml/Models/DrawingDto.cs
    • Removed the DrawingDto class.
  • src/MiniExcel.OpenXml/Models/ExcelColumnWidth.cs
    • Added new ExcelColumnWidth and ExcelColumnWidthCollection classes for enhanced column width management.
  • src/MiniExcel.OpenXml/Models/ExcelWidthCollection.cs
    • Removed the ExcelWidthCollection class, which was superseded by the new column width implementation.
  • src/MiniExcel.OpenXml/OpenXmlConfiguration.cs
    • Updated the default minimum width value.
  • src/MiniExcel.OpenXml/OpenXmlWriter.cs
    • Refactored column width handling to use the new ExcelColumnWidthCollection.
    • Updated the logic for detecting leading or trailing spaces in cell values.
  • tests/MiniExcel.OpenXml.Tests/MiniExcelAutoAdjustWidthTests.cs
    • Updated auto-adjust width tests to reflect the new column width calculations.
    • Refined test data handling and configuration for consistency.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the column width calculation logic to be more accurate, which is a great improvement. However, I've found a logical issue in the new implementation where a pre-calculated width value is incorrectly treated as a character count, leading to an extra padding being added. This affects both the production code and the corresponding test, which currently passes because the flaws cancel each other out. I've provided comments with suggestions for fixes.

@michelebastione michelebastione merged commit f52c8db into mini-software:master Mar 8, 2026
3 checks passed
@michelebastione michelebastione deleted the cell-width-optimization branch March 8, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Optimize ColumnWidth Attribute precision

1 participant