[{"data":1,"prerenderedAt":966},["ShallowReactive",2],{"topic:openpyxl":3},[4,13,19,24,29,34,39,45,50,56,62,68,74,80,85,90,95,100,107,112,117,122,127,132,137,142,147,152,158,163,168,173,179,185,190,195,200,205,211,216,221,227,232,237,243,248,253,258,263,269,274,279,284,289,294,299,304,309,314,319,324,329,334,339,344,349,354,359,364,369,374,379,384,389,394,399,405,410,415,420,425,430,435,440,446,451,456,461,466,471,477,482,487,492,497,502,507,512,518,523,528,533,538,543,548,554,559,564,569,574,579,584,589,594,599,604,610,616,622,628,633,638,643,649,654,659,664,669,674,679,684,689,694,699,704,709,714,720,725,730,735,740,745,750,755,760,765,770,775,780,785,790,795,800,805,810,815,820,825,831,836,841,846,851,856,861,866,871,876,881,886,891,896,901,906,911,916,921,926,931,936,941,946,951,956,961],{"path":5,"title":6,"description":7,"type":8,"topics":9,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl","Applying Conditional Formatting With openpyxl","Add Excel conditional formatting from Python with openpyxl: CellIsRule, ColorScaleRule, and FormulaRule, plus the 3.1 API quirks that trip people up.","guide",[10,11],"conditional-formatting","openpyxl",null,{"path":14,"title":15,"description":16,"type":17,"topics":18,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fadd-data-bars-and-colour-scales-with-openpyxl","Add Data Bars and Colour Scales with openpyxl","In-cell visuals that survive edits: DataBarRule and ColorScaleRule, percentile versus fixed endpoints, negative values, icon sets, and how to pick between a bar, a scale and a plain threshold.","how-to",[10,11],{"path":20,"title":21,"description":22,"type":17,"topics":23,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fadd-icon-sets-with-openpyxl","Add Icon Sets to Excel Cells with openpyxl","Add traffic lights, arrows, flags and rating icons to an Excel report with openpyxl's IconSetRule — choose the icon set, set thresholds as numbers, percents, percentiles or cells the reader can edit, control inclusive boundaries, show icons alone, and drive status icons from a calculated column.",[10,11],{"path":25,"title":26,"description":27,"type":17,"topics":28,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fapply-a-colour-scale-per-row-or-per-column-with-openpyxl","Apply a Colour Scale per Row or per Column with openpyxl","Colour scales compare every cell in their range with every other cell, so one big product drowns out all the small ones. Apply a separate colour scale to each row or each column with openpyxl so every item is coloured against its own range, choose between min-max and percentile scaling, keep the number of rules manageable, and check the rendered result.",[10,11],{"path":30,"title":31,"description":32,"type":17,"topics":33,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fcontrol-conditional-formatting-rule-order-and-stop-if-true","Control Conditional Formatting Rule Order and Stop If True","When several conditional-formatting rules match the same cell, their priority decides what the reader sees — and Excel and LibreOffice resolve overlaps differently. See how openpyxl numbers rules, set priority explicitly, use stopIfTrue so the first matching rule wins everywhere, design self-contained rules, and check the order in a saved file and a rendered page.",[10,11],{"path":35,"title":36,"description":37,"type":17,"topics":38,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-an-entire-row-based-on-a-cell-value-with-openpyxl","Highlight an Entire Row Based on a Cell Value with openpyxl","Colour a whole row when its Status is Overdue or its amount crosses a limit, using a formula-based conditional format with the right mix of absolute and relative references — so the colour follows the data after edits and sorts.",[10,11],{"path":40,"title":41,"description":42,"type":17,"topics":43,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-blank-cells-with-openpyxl","Highlight Blank Cells in Excel with openpyxl","Make missing values impossible to overlook: highlight empty required fields, whole rows with a gap, or blanks only inside the data. See why ISBLANK misses cells that look empty, how LEN(TRIM()) catches spaces and formulas returning \"\", and how to stop the rule from colouring every empty row below the table.",[10,44,11],"missing-data",{"path":46,"title":47,"description":48,"type":17,"topics":49,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-cells-above-a-threshold-with-openpyxl","Highlight Cells Above a Threshold with openpyxl","Draw the eye to the numbers that matter — CellIsRule for fixed thresholds, FormulaRule for a threshold that lives in a cell, whole-row highlighting, and rule priority.",[10,11],{"path":51,"title":52,"description":53,"type":17,"topics":54,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-cells-containing-text-with-openpyxl","Highlight Cells Containing Specific Text with openpyxl","Colour every status that mentions \"late\", every reference that begins with INV, or every note containing any word from a list. Write containsText, beginsWith and formula rules with openpyxl, choose between case-insensitive SEARCH and case-sensitive FIND, match whole words so \"late\" does not match \"calculate\", and drive the keyword from a cell.",[10,11,55],"data-validation",{"path":57,"title":58,"description":59,"type":17,"topics":60,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-differences-between-two-columns-with-openpyxl","Highlight Differences Between Two Columns with openpyxl","Mark every row where system A and system B disagree, or where this month's value differs from last month's sheet. Write the comparison as a conditional format with openpyxl, and decide deliberately how case, blanks versus zero, trailing spaces and rounding differences should count.",[10,61,11],"joins-and-lookups",{"path":63,"title":64,"description":65,"type":17,"topics":66,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-duplicate-values-in-excel-with-openpyxl","Highlight Duplicate Values in Excel with openpyxl","Flag repeated values in a worksheet: the built-in duplicateValues rule, formula rules for duplicates across columns, whole-row highlighting, and a pandas alternative.",[10,67,11],"data-cleaning",{"path":69,"title":70,"description":71,"type":17,"topics":72,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-overdue-dates-with-openpyxl","Highlight Overdue Dates in Excel with openpyxl","Mark overdue and due-soon rows in an Excel tracker with conditional formatting that uses TODAY(), so the colours stay correct every day the file is opened — ignore blank and completed rows, order rules with stopIfTrue, add a days-overdue column and avoid the text-date trap.",[10,73,11],"dates-and-times",{"path":75,"title":76,"description":77,"type":17,"topics":78,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-top-and-bottom-values-with-openpyxl","Highlight Top and Bottom Values in Excel with openpyxl","Mark the top three sales, the bottom 10%, everything above average, or the best rep in each region with conditional formatting written from Python. Covers the top10 and aboveAverage rules, how ties behave, highlighting whole rows, top-N per group with COUNTIFS, and checking the result without Excel.",[10,11,79],"report-layouts",{"path":81,"title":82,"description":83,"type":17,"topics":84,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fhighlight-values-outside-a-tolerance-of-target-with-openpyxl","Highlight Values Outside a Tolerance of Target with openpyxl","Colour each actual figure by how far it is from its own target — green within tolerance, amber close to the limit, red outside it — with openpyxl conditional formatting: percentage and absolute tolerances, a tolerance setting readers can change, per-row tolerances, targets of zero, and a recalculated check that the rules flag exactly the rows pandas expects.",[10,11],{"path":86,"title":87,"description":88,"type":17,"topics":89,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Flist-and-remove-conditional-formatting-with-openpyxl","List and Remove Conditional Formatting with openpyxl","See every conditional formatting rule in a workbook — range, type, priority, formula and fill — as a table, then remove rules by range, by type or all at once, collapse duplicates that pile up when scripts rerun, and renumber priorities, all with openpyxl.",[10,11],{"path":91,"title":92,"description":93,"type":17,"topics":94,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fopenpyxl-apply-conditional-formatting-to-range","Apply Conditional Formatting to a Range in openpyxl","Attach a conditional formatting rule to a cell range in openpyxl with conditional_formatting.add(), covering range syntax, CellIsRule, and the FormulaRule fallback.",[10,11],{"path":96,"title":97,"description":98,"type":17,"topics":99,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fapplying-conditional-formatting-with-openpyxl\u002Fuse-conditional-formatting-rules-that-reference-another-sheet","Use Conditional Formatting Rules That Reference Another Sheet","Highlight cells based on lists and settings kept on other sheets with openpyxl: flag orders from customers on a blocked list with COUNTIF across sheets, colour values above a threshold stored on a Settings sheet, use defined names so rules read clearly and work in older Excel versions, anchor references correctly, and verify the rule logic by recalculating a helper formula.",[10,11],{"path":101,"title":102,"description":103,"type":17,"topics":104,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fextracting-data-from-messy-excel-sheets\u002Fextract-hyperlink-urls-from-excel-cells","Extract Hyperlink URLs from Excel Cells with openpyxl","pandas reads the text a link displays, never the address behind it. Get the URLs out of Excel cells with openpyxl — inserted links, mailto links, links to other sheets and HYPERLINK formulas — and handle workbooks too large for normal mode.",[105,106,11],"messy-sheets","reading-excel",{"path":108,"title":109,"description":110,"type":17,"topics":111,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fextracting-data-from-messy-excel-sheets\u002Fextract-report-header-fields-from-an-excel-sheet","Extract Report Header Fields from an Excel Sheet with Python","Many exported reports put the branch, period, currency and run date in label-value pairs above the table. Read those fields with openpyxl wherever they sit, find where the table starts, parse the period into real dates and attach the fields to every row before combining files.",[105,106,11],{"path":113,"title":114,"description":115,"type":17,"topics":116,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fextracting-data-from-messy-excel-sheets\u002Fread-cell-colours-and-font-styles-as-data-with-openpyxl","Read Cell Colours and Font Styles as Data with openpyxl","When a spreadsheet uses green for done and red for blocked, the colour is the data. Read fill colours, bold and strikethrough with openpyxl and turn them into real columns.",[105,106,11],{"path":118,"title":119,"description":120,"type":17,"topics":121,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fextracting-data-from-messy-excel-sheets\u002Fread-dropdown-lists-from-an-existing-workbook","Read Dropdown Lists and Validation Rules from an Existing Workbook","Find out what a template's dropdowns allow — the regions, statuses and priority codes behind each data validation rule — and check the data people entered against them. Read validation rules with openpyxl, resolve inline lists, range references and named ranges to real values, and report every cell that breaks its rule.",[105,55,11],{"path":123,"title":124,"description":125,"type":17,"topics":126,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fextracting-data-from-messy-excel-sheets\u002Fskip-hidden-and-filtered-rows-when-reading-excel","Skip Hidden and Filtered Rows When Reading Excel","pandas reads every row, including the ones hidden by a filter or collapsed in a group. Use openpyxl to find hidden rows, columns and sheets, and read only what the user can see.",[105,106,11],{"path":128,"title":129,"description":130,"type":17,"topics":131,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fvalidating-excel-data-with-python\u002Fadd-dropdown-data-validation-to-excel-with-openpyxl","Add Dropdown Data Validation to Excel with openpyxl","Write Excel dropdown lists from Python with openpyxl DataValidation — inline lists, lists from a lookup sheet or named range, custom error messages, and the 255-character limit.",[55,11],{"path":133,"title":134,"description":135,"type":17,"topics":136,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fvalidating-excel-data-with-python\u002Fcreate-dependent-dropdown-lists-in-excel-with-python","Create Dependent Dropdown Lists in Excel with Python","Build cascading dropdowns — pick a category, then only its subcategories are offered — from a mapping table in Python: a hidden lookup sheet, one named range per category with safe names, a data validation list for the first column and an INDIRECT-based list for the second, error messages, and a Python check that existing rows still match.",[55,11],{"path":138,"title":139,"description":140,"type":17,"topics":141,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fvalidating-excel-data-with-python\u002Fhighlight-invalid-cells-in-excel-with-python","Highlight Invalid Cells in Excel with Python","Mark the exact cells that failed validation with openpyxl — a red fill, a comment explaining the rule, a legend and an issues sheet — so a submitter can fix the file in minutes.",[55,10,11],{"path":143,"title":144,"description":145,"type":17,"topics":146,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fvalidating-excel-data-with-python\u002Fvalidate-excel-rows-with-pydantic","Validate Excel Rows with pydantic Models","Describe what a valid row looks like once, as a pydantic model, and check every row of a sheet against it. Map Excel headers to fields with aliases, constrain values, normalise text before checking, add rules that span columns, and turn validation errors into a report that names the Excel row, column and value.",[55,11],{"path":148,"title":149,"description":150,"type":17,"topics":151,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fworking-with-dates-and-times-in-excel-data\u002Fhandle-the-1904-date-system-in-excel-files","Handle the 1904 Date System in Excel Files with Python","Some workbooks count dates from 1 January 1904 instead of 1900, so the same serial number means a date four years and one day later. Detect which system a file uses with openpyxl, convert raw serial numbers with the right origin, combine files that use different systems, and write workbooks in either system.",[73,106,11],{"path":153,"title":154,"description":155,"type":17,"topics":156,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fworking-with-large-excel-files-in-python\u002Fcount-rows-in-an-excel-file-without-loading-it","Count Rows in an Excel File Without Loading It","Find out how many rows a large workbook has before deciding how to process it — in milliseconds, without reading it into pandas. Read the size the file declares with openpyxl, spot when that size is missing or inflated by formatted empty rows, and count real rows with calamine or by streaming the sheet's XML.",[157,11],"large-files",{"path":159,"title":160,"description":161,"type":17,"topics":162,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fworking-with-large-excel-files-in-python\u002Ffind-out-why-an-excel-file-is-slow-to-open","Find Out Why an Excel File Is Slow to Open","Diagnose a sluggish workbook from Python without opening it in Excel: which parts of the xlsx package take the space, sheets whose used range stretches far beyond the data, thousands of cell styles, piles of conditional-formatting rules and data validations, volatile functions such as INDIRECT and OFFSET, external links, and a one-page diagnosis sheet that ranks what to fix first.",[157,11],{"path":164,"title":165,"description":166,"type":17,"topics":167,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fworking-with-large-excel-files-in-python\u002Freduce-the-file-size-of-an-excel-workbook-with-python","Reduce the File Size of an Excel Workbook with Python","Find out what makes a workbook big by measuring its parts, then shrink it where it counts: downscale oversized images, delete formatted-but-empty rows that inflate the used range, remove archive sheets, and know which popular fixes barely help. Includes measured before-and-after sizes, an openpyxl bug that breaks saving twice, and habits that keep generated reports small.",[157,11],{"path":169,"title":170,"description":171,"type":17,"topics":172,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fworking-with-large-excel-files-in-python\u002Fspeed-up-openpyxl-with-read-only-mode","Speed Up openpyxl with read_only Mode","How openpyxl's read_only mode streams a worksheet instead of building it, what values_only=True saves, the limits you accept in exchange, and the file handle you must close.",[157,106,11],{"path":174,"title":175,"description":176,"type":17,"topics":177,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fworking-with-large-excel-files-in-python\u002Fstream-excel-rows-into-a-database-with-openpyxl","Stream Excel Rows into a Database with openpyxl","Load a large Excel sheet into a database without ever holding it in memory — read rows with openpyxl's read-only mode, convert and validate each row, insert in batches inside a transaction, divert bad rows to a rejects table and make the load safe to rerun.",[157,178,11],"data-sources",{"path":180,"title":181,"description":182,"type":17,"topics":183,"kind":12},"\u002Fautomating-reporting-workflows\u002Fbuilding-multi-sheet-excel-dashboards\u002Flink-dashboard-cells-to-data-sheets-with-formulas","Link Dashboard Cells to Data Sheets with Formulas","Build an Excel dashboard whose figures are live formulas pointing at the data sheets — SUMIFS and COUNTIFS over a table, a named report-month cell readers can change, quoted sheet names, errors handled with IFERROR — so the dashboard updates when the data does, and check the results without Excel.",[79,184,11],"excel-formulas",{"path":186,"title":187,"description":188,"type":8,"topics":189,"kind":12},"\u002Fautomating-reporting-workflows\u002Fgenerating-excel-reports-from-templates","Generating Excel Reports from Templates","Inject data into a prepared .xlsx with openpyxl instead of rebuilding sheets from scratch — preserve branding, formulas, and print areas, then save a dated copy.",[79,11],{"path":191,"title":192,"description":193,"type":17,"topics":194,"kind":12},"\u002Fautomating-reporting-workflows\u002Fgenerating-excel-reports-from-templates\u002Ffill-excel-template-with-python-openpyxl","Fill an Excel Template with Python and openpyxl","Load a prepared .xlsx template with openpyxl, set named cells for title, date and totals, fill a repeating data table from a list or DataFrame, and save a new file.",[79,11],{"path":196,"title":197,"description":198,"type":17,"topics":199,"kind":12},"\u002Fautomating-reporting-workflows\u002Fgenerating-excel-reports-from-templates\u002Fgenerate-invoices-from-an-excel-template","Generate Invoices from an Excel Template with Python","Produce one invoice workbook per customer from a designed Excel template — named cells instead of hard-coded addresses, money calculated with Decimal and a stated VAT rounding rule, invoice numbers that never repeat or skip, a fixed block of line rows with an overflow check, a register of everything issued and a PDF for each invoice.",[79,11],{"path":201,"title":202,"description":203,"type":17,"topics":204,"kind":12},"\u002Fautomating-reporting-workflows\u002Fgenerating-excel-reports-from-templates\u002Frepeat-a-template-block-for-each-record","Repeat a Template Block for Each Record in an Excel Report","Stamp a designed block of rows — a customer statement, a card, a mini-report — once per record down a single sheet with openpyxl, copying styles, merged cells, row heights and conditional formatting, translating formulas to their new rows, growing the block for records with more line items and starting each record on a new printed page.",[79,11],{"path":206,"title":207,"description":208,"type":17,"topics":209,"kind":12},"\u002Fautomating-reporting-workflows\u002Ftesting-and-packaging-excel-automation-scripts\u002Fcompare-excel-output-to-a-golden-file-in-tests","Compare Excel Output to a Golden File in Tests","Test a whole generated workbook at once by comparing it with an approved \"golden\" snapshot — not the .xlsx bytes, which change on every save, but a readable text description of every cell's value, number format and style. Includes masking volatile cells, a clear diff when something changes and a --update-golden option for intended changes.",[210,11],"reliable-jobs",{"path":212,"title":213,"description":214,"type":17,"topics":215,"kind":12},"\u002Fautomating-reporting-workflows\u002Ftesting-and-packaging-excel-automation-scripts\u002Fcreate-excel-test-fixtures-in-memory","Create Excel Test Fixtures in Memory for pytest","Stop committing sample spreadsheets to the test folder. Build each test workbook in memory with openpyxl — including the awkward shapes real exports have, such as title rows above the header, dates and numbers stored as text, error cells, formulas without results and formatted empty rows — and run one test across all of them with pytest.mark.parametrize.",[210,11],{"path":217,"title":218,"description":219,"type":17,"topics":220,"kind":12},"\u002Fautomating-reporting-workflows\u002Ftesting-and-packaging-excel-automation-scripts\u002Fprofile-a-slow-excel-report-script","Profile a Slow Excel Report Script in Python","Find out where a slow report actually spends its time before changing anything. Time each stage with a small context manager, drill into the slowest one with cProfile and pstats, read the output correctly, and fix the usual culprits — per-cell styling in openpyxl, slow reads, row-by-row writes — measuring the gain each time.",[157,11,210],{"path":222,"title":223,"description":224,"type":17,"topics":225,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fapplying-number-and-date-formats-in-excel\u002Fformat-numbers-in-thousands-and-millions-in-excel","Format Numbers in Thousands and Millions in Excel with Python","Show 1,234,567 as 1,235K or 1.2M in an Excel report without changing the stored value — scaling commas in number formats, units in headers or suffixes, auto-switching K and M with conditional sections, negatives and small values, and totals that seem not to add up.",[226,11],"number-formats",{"path":228,"title":229,"description":230,"type":17,"topics":231,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fapplying-number-and-date-formats-in-excel\u002Fread-cell-values-as-displayed-in-excel","Read Cell Values as Displayed in Excel with Python","openpyxl and pandas return the stored value — 1234.5 — not the text Excel shows, such as (1,235) or 05\u002F03\u002F2026. Get the displayed text two ways — exported by LibreOffice, or formatted in Python by a small function that handles common number and date codes — and check them against each other.",[226,106,11],{"path":233,"title":234,"description":235,"type":17,"topics":236,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fapplying-number-and-date-formats-in-excel\u002Fshow-negative-numbers-in-red-with-parentheses","Show Negative Numbers in Red with Parentheses in Excel","Format negatives the way finance readers expect — (1,235) in red, aligned with the positives above them — from Python with openpyxl or XlsxWriter. Covers the _) alignment trick, zero as a dash, currency and accounting layouts, reversed colours for costs, the \"(0)\" trap and parsing parentheses back into numbers.",[226,11],{"path":238,"title":239,"description":240,"type":8,"topics":241,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl","Creating Charts in Excel with openpyxl","Build native, editable Excel charts from Python with openpyxl: bind data with Reference and Series, make bar, line, and pie charts, add titles and legends, and anchor them.",[242,11],"charts-and-images",{"path":244,"title":245,"description":246,"type":17,"topics":247,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fadd-a-combo-chart-with-a-secondary-axis-in-openpyxl","Add a Combo Chart with a Secondary Axis in openpyxl","Plot revenue as bars and margin as a line on their own axis — combining chart objects, the y_axis.axId and crosses settings, and when a second axis misleads.",[242,11],{"path":249,"title":250,"description":251,"type":17,"topics":252,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fadd-a-data-table-below-an-excel-chart","Add a Data Table Below an Excel Chart","Show the numbers behind a chart in a grid directly underneath it — Excel's chart data table — from Python: switch it on with openpyxl's DataTable or XlsxWriter's set_table, choose borders and legend keys, drop the separate legend, carry the cells' number formats into the table, and check the rendered result. Includes when a data table helps and when data labels or a separate table are better.",[242,11],{"path":254,"title":255,"description":256,"type":17,"topics":257,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fadd-a-trendline-to-an-excel-chart-with-python","Add a Trendline to an Excel Chart with Python","Add linear, moving-average, polynomial and exponential trendlines to Excel line and column charts with openpyxl — forecast periods ahead, show the equation and R², style the line, and put the same fitted numbers into cells with SLOPE, INTERCEPT and RSQ so the trend can be read by people and by code.",[242,11],{"path":259,"title":260,"description":261,"type":17,"topics":262,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fadd-error-bars-to-an-excel-chart-with-openpyxl","Add Error Bars to an Excel Chart with openpyxl","Show uncertainty and ranges on Excel charts written from Python: compute confidence intervals from raw data with pandas and SciPy, attach custom error bars that read their lengths from cells, draw asymmetric min\u002Fmax ranges, use fixed and percentage error bars, style the bars, and check the result by rendering the workbook.",[242,11],{"path":264,"title":265,"description":266,"type":17,"topics":267,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fadd-line-chart-to-excel-report-with-python","Add a Line Chart to an Excel Report with Python","Add an editable line chart to an Excel report with openpyxl: write time-series data, plot multiple series, set a date x-axis, add markers, label axes, and anchor it.",[242,268,11],"writing-excel",{"path":270,"title":271,"description":272,"type":17,"topics":273,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-box-and-whisker-chart-in-excel-with-python","Create a Box and Whisker Chart in Excel with Python","Excel's built-in box-and-whisker chart cannot be written by openpyxl or XlsxWriter, but a native, editable box plot can be built from a stock chart: compute quartiles and whisker ends with pandas, map them to open, high, low and close, let up-down bars draw the boxes and high-low lines the whiskers, add a median marker, and list outliers beside the chart.",[242,11],{"path":275,"title":276,"description":277,"type":17,"topics":278,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-bubble-chart-with-openpyxl","Create a Bubble Chart in Excel with openpyxl","Plot three measures at once — margin across, growth up, revenue as bubble size — to see a product portfolio or customer list at a glance. Build a native Excel bubble chart with openpyxl, add one series per group, size bubbles by area, scale them, label each bubble with its name, and keep axis labels clear of negative values.",[242,11],{"path":280,"title":281,"description":282,"type":17,"topics":283,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-bullet-chart-in-excel-with-python","Create a Bullet Chart in Excel with Python","Build a bullet chart — qualitative bands, an actual-value bar and a target marker — as a native Excel chart from Python: normalise KPIs with different units, draw the bands as stacked columns, draw the actual as a thick error bar and the target as a dash marker on the same axis, tidy the legend and axis, and check the rendered result. Includes why the common secondary-axis recipe is fragile.",[242,11],{"path":285,"title":286,"description":287,"type":17,"topics":288,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-butterfly-chart-in-excel-with-python","Create a Butterfly Chart in Excel with Python","Build a butterfly (tornado, population-pyramid) chart as a native Excel bar chart with openpyxl: plot one side as negative values, overlap the two series on the same rows, hide the minus signs with a two-part number format, move the category labels to the edge, show positive data labels, colour each side, and check the rendered result.",[242,11],{"path":290,"title":291,"description":292,"type":17,"topics":293,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-doughnut-chart-with-openpyxl","Create a Doughnut Chart with openpyxl","Build an Excel doughnut chart from Python: data and categories from a sheet, the hole size, one colour per slice, percentage labels that are readable on dark slices, a start angle, two rings to compare periods, the total shown in the title, and when a bar chart would say it better.",[242,11],{"path":295,"title":296,"description":297,"type":17,"topics":298,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-dumbbell-chart-in-excel-with-python","Create a Dumbbell Chart in Excel with Python","Build a dumbbell chart — two dots per category joined by a line, showing a before and after value — as a native Excel chart with openpyxl: a line chart with the lines switched off and markers on, the connecting bars drawn as custom error bars from a hidden helper series, categories sorted by the size of the change, the helper hidden from the legend, and the result rendered to check it.",[242,11],{"path":300,"title":301,"description":302,"type":17,"topics":303,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-funnel-chart-in-excel-with-python","Create a Funnel Chart in Excel with Python","Draw a conversion funnel — visitors to orders, leads to deals, applicants to hires — as an Excel chart from Python: step and overall conversion rates with pandas, a centred stacked bar chart with an invisible spacer series in openpyxl, labels that carry counts and rates, stages top to bottom, and why the native funnel chart type is out of reach.",[242,11],{"path":305,"title":306,"description":307,"type":17,"topics":308,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-gantt-chart-in-excel-with-python","Create a Gantt Chart in Excel with Python","Draw a project or month-end close timeline as a native Excel Gantt chart from a task list. Build it from a stacked bar chart with an invisible start series, put the first task at the top and the dates along the bottom, fix the date range, shade progress, and — as an alternative — paint a Gantt grid with conditional formatting.",[242,79,11],{"path":310,"title":311,"description":312,"type":17,"topics":313,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-gauge-chart-in-excel-with-python","Create a Gauge Chart in Excel with Python","Build a speedometer-style KPI gauge from Python with openpyxl: a half-circle doughnut made by hiding half of each ring, coloured red, amber and green bands from your thresholds, a value arc that moves when the KPI cell changes, a helper table of formulas behind it, several gauges on one dashboard, and a render check.",[242,11],{"path":315,"title":316,"description":317,"type":17,"topics":318,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-pie-chart-in-excel-with-openpyxl","Create a Pie Chart in Excel with openpyxl","PieChart, data labels that show percentages, exploding a slice, a doughnut variant — and the honest guidance on when a bar chart tells the same story better.",[242,11],{"path":320,"title":321,"description":322,"type":17,"topics":323,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-radar-chart-with-openpyxl","Create a Radar Chart with openpyxl","Compare several options across the same criteria — vendors, products, candidates, regions — with an Excel radar (spider) chart built from Python: series from a scoring table, a fixed 0–5 scale, visible axes, marker and filled styles, one colour per option, and a weighted score table next to it so the chart is not the only basis for a decision.",[242,11],{"path":325,"title":326,"description":327,"type":17,"topics":328,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-scatter-chart-in-excel-with-openpyxl","Create a Scatter Chart in Excel with openpyxl","Plot one numeric column against another with openpyxl: ScatterChart and Series, markers without lines, axis titles and scaling, a trendline, and multiple series.",[242,11],{"path":330,"title":331,"description":332,"type":17,"topics":333,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-slope-chart-in-excel-with-python","Create a Slope Chart in Excel with Python","Build a slope chart in Excel with openpyxl to compare each item between two periods: lay the data out with one series per item, draw a line chart with only two category points, colour rising and falling items differently, label each line at its ends instead of using a legend, tidy the axes, and check the rendered chart.",[242,11],{"path":335,"title":336,"description":337,"type":17,"topics":338,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-stacked-column-chart-with-openpyxl","Create a Stacked Column Chart with openpyxl","Build stacked and 100% stacked column charts in Excel with openpyxl — grouping and overlap settings, series colours, value labels inside each segment, a total label above every stack using an invisible line series, hiding its legend entry, and horizontal stacked bars.",[242,11],{"path":340,"title":341,"description":342,"type":17,"topics":343,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-step-chart-in-excel-with-python","Create a Step Chart in Excel with Python","Draw values that change at specific moments and then hold — prices, interest rates, headcount, stock levels — as a step chart in Excel from Python: why a normal line chart misleads with diagonal ramps, how to double up the change points with pandas, build the chart as an openpyxl scatter chart on a real date axis, carry the last value to the end of the period, and compare several series.",[242,11],{"path":345,"title":346,"description":347,"type":17,"topics":348,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-stock-chart-with-openpyxl","Create a Stock Chart with openpyxl","Draw an open-high-low-close candlestick chart in Excel from Python: the column order Excel requires, hiding the series lines, high-low lines, up and down bars in your own colours, a value axis that does not start at zero, trading days without weekend gaps, and a volume chart underneath.",[242,11],{"path":350,"title":351,"description":352,"type":17,"topics":353,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-a-waffle-or-progress-chart-in-excel","Create a Waffle or Progress Chart in Excel","Show progress towards 100% — share of a target reached, budget used, survey completion — as a waffle chart of 100 cells or as a progress bar, built from worksheet cells and conditional formatting with openpyxl rather than a chart object: number the grid so it fills from the bottom, colour cells with one formula rule driven by the percentage cell, hide the numbers, add data-bar progress bars with fixed 0–100% limits, and render the sheet to check.",[242,11],{"path":355,"title":356,"description":357,"type":17,"topics":358,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-an-area-chart-with-openpyxl","Create an Area Chart in Excel with openpyxl","Show how a total builds up over time — revenue by region, hours by project, stock by warehouse — with a native Excel area chart. Build standard, stacked and 100% stacked area charts with openpyxl, make overlapping areas see-through, keep axes visible in Excel, order series so small ones are not hidden, and handle gaps in the data.",[242,11],{"path":360,"title":361,"description":362,"type":17,"topics":363,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fcreate-bar-chart-in-excel-with-openpyxl","Create a Bar Chart in Excel with openpyxl","Build a native, editable Excel bar chart from Python with openpyxl: write sample data, bind it with Reference, set categories and titles, pick a style, and anchor it.",[242,11],{"path":365,"title":366,"description":367,"type":17,"topics":368,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fformat-chart-axes-with-openpyxl","Format Chart Axes with openpyxl","Make the axes of an openpyxl chart say what you mean: keep them visible in Excel, title them, fix the scale and the step between labels, show thousands as \"k\", switch gridlines on or off, use a logarithmic scale for fast growth, rotate crowded category labels, and move labels clear of negative bars.",[242,11],{"path":370,"title":371,"description":372,"type":17,"topics":373,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fplot-a-chart-from-non-adjacent-columns","Plot a Chart from Non-Adjacent Columns","Chart only some of a sheet's columns — dates from column A, actual from D and forecast from G — without copying data around: add each series from its own Reference with openpyxl or its own add_series call in XlsxWriter, take series names from the header cells, find columns by heading instead of letter, keep a chart working when columns in between are hidden, and check the series references in the chart XML.",[242,11],{"path":375,"title":376,"description":377,"type":17,"topics":378,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fput-a-chart-on-its-own-chartsheet-with-openpyxl","Put a Chart on Its Own Chartsheet with openpyxl","Give a chart a whole sheet to itself — a full-screen, full-page chart tab that opens first in the workbook, prints on one page and cannot be dragged out of place. Create chartsheets with openpyxl, size the chart so every application shows it properly, make one per region in a loop, colour and order the tabs, protect them and set landscape printing.",[242,79,11],{"path":380,"title":381,"description":382,"type":17,"topics":383,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fshade-a-target-band-behind-a-line-chart","Shade a Target Band Behind a Line Chart","Show a target range — on-time delivery between 95% and 98%, stock cover between two and four weeks — as a shaded band behind a line in a native Excel chart built with openpyxl: a stacked area chart with an invisible lower series and a coloured band series, a line chart combined on the same axes, band limits driven by two input cells, the helper series removed from the legend, and the weeks outside the band listed next to the chart.",[242,11],{"path":385,"title":386,"description":387,"type":17,"topics":388,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fshow-negative-bars-in-a-different-colour","Show Negative Bars in a Different Colour","Colour the negative bars of a variance or profit chart red and the positive ones green, from Python: split the values into two helper series that update with the data, colour individual data points when the values are fixed, or use XlsxWriter's invert-if-negative colour for Excel 2010 and later — with what each approach writes into the file, how to check it, and why openpyxl's invertIfNegative on its own turns negative bars white.",[242,11],{"path":390,"title":391,"description":392,"type":17,"topics":393,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fstyle-chart-colors-and-data-labels-with-openpyxl","Style Chart Colours and Data Labels with openpyxl","Replace Excel's default chart styling from Python — series fill and outline colours, one highlighted bar, dashed target lines, subtle gridlines, bold coloured data labels, label number formats that survive every viewer, and a single palette function so every chart in a report matches.",[242,11],{"path":395,"title":396,"description":397,"type":17,"topics":398,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-charts-in-excel-with-openpyxl\u002Fuse-multi-level-category-labels-in-an-excel-chart","Use Multi-Level Category Labels in an Excel Chart","Label a chart's category axis in two tiers — quarters grouped under years, months under quarters, products under regions — with openpyxl: write the outer label only on the first row of each group, point the categories at both columns as a multi-level string reference, and see why repeated outer labels break the grouping. Rendered to check, with the XlsxWriter equivalent.",[242,11],{"path":400,"title":401,"description":402,"type":17,"topics":403,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fadd-a-total-row-to-an-excel-table","Add a Total Row to an Excel Table with Python","Give an Excel table a real totals row from Python — the one readers can switch between Sum, Average and Count in Excel — with openpyxl's totalsRowCount and table column settings, SUBTOTAL formulas that respect filters, custom totals, the matching XlsxWriter options and how to keep the totals row out of pandas.",[404,184,11],"tables-and-filters",{"path":406,"title":407,"description":408,"type":17,"topics":409,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fadd-an-autofilter-to-an-excel-sheet-with-openpyxl","Add an Autofilter to an Excel Sheet with openpyxl","Set ws.auto_filter.ref so every data row is covered, freeze the header, apply it after pandas writes the sheet, and understand why recorded filter criteria hide nothing.",[404,11],{"path":411,"title":412,"description":413,"type":17,"topics":414,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fappend-rows-to-an-excel-table-and-resize-it","Append Rows to an Excel Table and Resize It with openpyxl","Add new records to an existing Excel table so it grows the way it does when someone types below it: extend the table's range and filter, fill calculated columns with the correct structured-reference formula, carry number formats down, move the totals row, and extend dropdowns — so pivots, charts and formulas that use the table pick the rows up.",[404,11],{"path":416,"title":417,"description":418,"type":17,"topics":419,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fapply-autofilter-criteria-and-hide-rows","Apply Autofilter Criteria and Hide the Filtered Rows with openpyxl","openpyxl can record autofilter criteria, but it never hides a row — the file opens showing everything under a filter that claims otherwise. Write the criteria and hide the non-matching rows yourself so the workbook opens already filtered, with SUBTOTAL totals that match what readers see.",[404,11],{"path":421,"title":422,"description":423,"type":17,"topics":424,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fconvert-an-excel-table-back-to-a-normal-range","Convert an Excel Table Back to a Normal Range","Do from Python what Excel's \"Convert to Range\" does: remove a table object with openpyxl, rewrite the structured references that would otherwise break into ordinary A1 references, keep the banded look by writing it into the cells, keep an AutoFilter if one is wanted, and check with a recalculation that every formula still gives the same answer.",[404,11],{"path":426,"title":427,"description":428,"type":17,"topics":429,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fconvert-several-ranges-into-excel-tables-at-once","Convert Several Ranges into Excel Tables at Once","Turn every block of data in a workbook into a proper Excel table in one pass with openpyxl: find the separate rectangular blocks on each sheet, check and repair their header rows so Excel will accept them, give each table a unique valid name from its sheet and heading, skip blocks that are too small or already tables, and verify that nothing overlaps.",[404,11],{"path":431,"title":432,"description":433,"type":17,"topics":434,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fcreate-an-excel-table-with-python","Create an Excel Table with Python","Build a real Excel table with openpyxl — Table and TableStyleInfo, header rules that prevent the repair dialog, structured references, extending the range, and reading existing tables.",[404,11],{"path":436,"title":437,"description":438,"type":17,"topics":439,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fgroup-and-outline-rows-in-excel-with-openpyxl","Group and Outline Rows in Excel with openpyxl","Add collapsible groups to a generated report: row and column outlines, nested levels, collapsed-by-default state, summary rows below or above, and subtotal formulas.",[404,11],{"path":441,"title":442,"description":443,"type":17,"topics":444,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Fread-an-excel-table-by-name-into-pandas","Read an Excel Table by Name into pandas","pandas has no option to read an Excel table by its name, but openpyxl knows every table's exact range. Find a table anywhere in the workbook, skip its totals row, get formula results, and load it into a DataFrame.",[404,106,11,445],"pandas",{"path":447,"title":448,"description":449,"type":17,"topics":450,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fcreating-excel-tables-and-autofilters-with-python\u002Frename-and-restyle-existing-excel-tables","Rename and Restyle Existing Excel Tables","Give the Table1, Table2 and Table3 in an existing workbook meaningful names with openpyxl without breaking anything: rename the table object and its key, rewrite every structured reference to it in cell formulas, defined names, data validation and conditional formatting, refuse names that clash, then apply one table style across the workbook — checked by recalculating the formulas in LibreOffice before and after.",[404,11],{"path":452,"title":453,"description":454,"type":8,"topics":455,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Finserting-images-and-logos-into-excel","Inserting Images and Logos into Excel","Embed logos and images into Excel with openpyxl: floating drawings anchored to cells, pixel resizing, header bands, and why pandas can't keep them.",[242,11],{"path":457,"title":458,"description":459,"type":17,"topics":460,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Finserting-images-and-logos-into-excel\u002Fadd-logo-image-to-excel-report-with-openpyxl","Add a Logo Image to an Excel Report with openpyxl","Step-by-step openpyxl guide to add a logo to an Excel report: create the image, anchor it at A1, size it to a header band, add a merged title, and save.",[242,268,11],{"path":462,"title":463,"description":464,"type":17,"topics":465,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Finserting-images-and-logos-into-excel\u002Finsert-an-image-from-memory-into-excel","Insert an Image from Memory into Excel with Python","Put images into a workbook straight from bytes — a logo downloaded over HTTP, a base64 string from an API, a photo stored in a database, a picture resized with Pillow — without writing temporary files, using openpyxl or XlsxWriter, and avoid the closed-buffer and format errors that only appear at save time.",[242,11],{"path":467,"title":468,"description":469,"type":17,"topics":470,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Finserting-images-and-logos-into-excel\u002Fresize-and-position-images-in-excel-with-openpyxl","Resize and Position Images in Excel with openpyxl","Place a logo or chart image exactly where you want it — pixel sizing, aspect ratio, cell and offset anchors, and why an image moves when a column is resized.",[242,11],{"path":472,"title":473,"description":474,"type":17,"topics":475,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Fadd-comments-and-notes-to-excel-cells-with-python","Add Comments and Notes to Excel Cells with Python","Annotate generated Excel reports from Python: attach openpyxl comments, size them, read existing notes back, and use document properties to record where the numbers came from.",[476,11],"protection-and-sharing",{"path":478,"title":479,"description":480,"type":17,"topics":481,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Fhide-sheets-rows-and-columns-with-openpyxl","Hide Sheets, Rows and Columns with openpyxl","Tidy a generated Excel report from Python: hide working sheets, use veryHidden, collapse rows and columns, add outline grouping, and avoid the last-visible-sheet corruption.",[476,11],{"path":483,"title":484,"description":485,"type":17,"topics":486,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Flet-different-people-edit-different-ranges","Let Different People Edit Different Ranges","Build a shared budget workbook in which each team can edit only its own column: Excel's Allow Edit Ranges written with XlsxWriter's unprotect_range, one range and password per team on a protected sheet, what users see when they type in someone else's range, why openpyxl silently deletes these ranges when it saves the file, and a small function that puts them back.",[476,11],{"path":488,"title":489,"description":490,"type":17,"topics":491,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Flock-cells-and-protect-a-sheet-with-openpyxl","Lock Cells and Protect a Sheet with openpyxl","Stop readers overwriting formulas in a generated report: unlock the input cells, enable sheet protection, choose which operations stay allowed, and verify it on the way out.",[476,11],{"path":493,"title":494,"description":495,"type":17,"topics":496,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Fmake-an-excel-file-open-read-only-recommended","Make an Excel File Open Read-Only Recommended","Stop colleagues from accidentally editing a published report: set the read-only recommended flag with xlsxwriter, add it to openpyxl workbooks with a small post-save patch, mark a workbook as final, keep the flag from being dropped when the file is re-saved, and understand what these settings do and do not protect.",[476,11],{"path":498,"title":499,"description":500,"type":17,"topics":501,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Fprotect-workbook-structure-with-openpyxl","Protect Workbook Structure with openpyxl","Stop readers adding, deleting, renaming, moving, hiding or unhiding sheets in a generated report by locking the workbook structure with openpyxl — combined with very hidden lookup sheets and sheet protection — and understand how weak the stored password is and what the lock does not cover.",[476,11],{"path":503,"title":504,"description":505,"type":17,"topics":506,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Fremove-hidden-data-before-sharing-an-excel-file","Remove Hidden Data Before Sharing an Excel File","A workbook sent outside the team often carries more than the visible numbers: hidden and very hidden sheets, hidden rows and columns, comments with names in them, formulas that point at a salary sheet, named ranges and author details. Audit a workbook for all of it with openpyxl, then build a clean copy with values only, and check the copy before it goes out.",[476,11],{"path":508,"title":509,"description":510,"type":17,"topics":511,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fprotecting-and-sharing-excel-workbooks\u002Fremove-sheet-protection-with-openpyxl","Remove Sheet Protection from a Workbook You Own with openpyxl","Update your own protected report templates from Python — turn off sheet and workbook structure protection, make changes, and put the original protection back exactly as it was, including Excel's SHA-512 password hashes. Covers what openpyxl keeps, what \"unprotecting\" does and does not change, and batch maintenance of many files.",[476,11],{"path":513,"title":514,"description":515,"type":8,"topics":516,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl","Styling Excel Cells with openpyxl","Style Excel cells from Python with openpyxl: Font, PatternFill, Border, Alignment, header rows in a loop, merged titles, and reusable NamedStyles — all runnable.",[517,11],"cell-styling",{"path":519,"title":520,"description":521,"type":17,"topics":522,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fadd-alternating-row-colors-with-openpyxl","Add Alternating Row Colors with openpyxl","Band the rows of an Excel report so long lists are easy to follow — with static fills, a MOD(ROW()) conditional format that survives sorting, a SUBTOTAL-based rule that keeps alternating when rows are filtered, table stripes, and banding by group instead of by row.",[517,10,11],{"path":524,"title":525,"description":526,"type":17,"topics":527,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fadd-borders-to-a-range-with-openpyxl","Add Borders to a Range with openpyxl","openpyxl sets borders per cell, and every assignment replaces the whole border. Build helpers that draw a light grid, an outline around a table, a heavy line under the header and a double line above totals — without wiping edges set earlier — and handle merged cells and immutable style objects correctly.",[517,11],{"path":529,"title":530,"description":531,"type":17,"topics":532,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fadd-hyperlinks-to-excel-cells-with-python","Add Hyperlinks to Excel Cells with Python","Attach web, sheet, email and file links with openpyxl and xlsxwriter — including the style line that makes them look clickable, and when the HYPERLINK formula is the better choice.",[517,11],{"path":534,"title":535,"description":536,"type":17,"topics":537,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fapply-a-reusable-style-theme-across-an-excel-report","Apply a Reusable Style Theme Across an Excel Report","Stop scattering fonts and fills through your script — define a theme once with NamedStyle, apply it by role, and keep every generated report visually consistent.",[517,11],{"path":539,"title":540,"description":541,"type":17,"topics":542,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fapply-built-in-cell-styles-like-good-bad-and-neutral","Apply Built-In Cell Styles Like Good, Bad and Neutral","Use Excel's own built-in cell styles from Python with openpyxl — Good, Bad and Neutral, Title and the headline styles, Input, Calculation, Total, Note and the accent styles: the exact names openpyxl expects, applying them by value, what happens when you add direct formatting on top, how they appear in Excel's Cell Styles gallery, and when conditional formatting is the better tool.",[517,11],{"path":544,"title":545,"description":546,"type":17,"topics":547,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fapply-gradient-and-pattern-fills-with-openpyxl","Apply Gradient and Pattern Fills with openpyxl","Fill cells with solid colours, hatching patterns and two-colour gradients from Python: which colour a solid PatternFill really uses (and why a bgColor-only fill turns black), the pattern types and their foreground\u002Fbackground colours, linear and path GradientFill, fills in conditional formats, removing fills, and a rendered check of what each one looks like.",[517,11],{"path":549,"title":550,"description":551,"type":17,"topics":552,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fchange-the-default-font-of-an-excel-workbook-with-python","Change the Default Font of an Excel Workbook with Python","Make a generated workbook use your house font everywhere — not just in the cells you styled: set XlsxWriter's default_format_properties (also through pandas), understand why changing the Normal style in openpyxl does nothing to existing cells, use a template so openpyxl inherits the right default, keep bold and coloured cells in the same family, and verify the fonts that actually render.",[517,11,553],"xlsxwriter",{"path":555,"title":556,"description":557,"type":17,"topics":558,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Ffreeze-header-row-in-excel-with-openpyxl","Freeze the Header Row in Excel with openpyxl","Freeze the header row in Excel from Python with openpyxl using ws.freeze_panes. Freeze rows, columns, or both, understand the anchor cell, and unfreeze — runnable.",[105,517,11],{"path":560,"title":561,"description":562,"type":17,"topics":563,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fhide-gridlines-and-set-zoom-with-openpyxl","Hide Gridlines and Set the Zoom Level with openpyxl","Control how a generated workbook looks the moment it opens: hide gridlines and headings, set the zoom, choose the selected cell and the first visible row, open in Page Layout view, hide zeros, set right-to-left sheets, and avoid the grouped-sheets trap when changing the active sheet.",[517,11],{"path":565,"title":566,"description":567,"type":17,"topics":568,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Findent-cells-to-show-a-hierarchy-with-openpyxl","Indent Cells to Show a Hierarchy with openpyxl","Lay out a chart of accounts, an organisation or a product tree the way people read hierarchies: children indented under their parent, parents in bold with rolled-up totals, and rows grouped so each branch can be collapsed. Work out each row's depth from a parent–child table, set Alignment(indent=...), roll values up the tree and add outline levels with openpyxl.",[517,79,11],{"path":570,"title":571,"description":572,"type":17,"topics":573,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fmerge-cells-and-centre-a-report-title-with-openpyxl","Merge Cells and Centre a Report Title with openpyxl","Add a merged, centred title banner to a generated report — merge_cells, styling the anchor cell, the MergedCell read-only trap, and why centre-across-selection is often better.",[517,11],{"path":575,"title":576,"description":577,"type":17,"topics":578,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Frotate-text-in-excel-cells-with-openpyxl","Rotate Text in Excel Cells with openpyxl","Angle header labels so a wide table of months, products or dates fits on screen, turn a side label vertical beside a block of rows, or stack letters top to bottom. Set textRotation with openpyxl — and understand its odd 0–180 and 255 values — size the header row so rotated text is not clipped, and do the same in xlsxwriter.",[517,11],{"path":580,"title":581,"description":582,"type":17,"topics":583,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fset-column-width-and-row-height-in-openpyxl","Set Column Width and Row Height in openpyxl","Set Excel column widths and row heights from Python with openpyxl, build an auto-fit pass by measuring content, hide columns, and set sensible defaults — runnable.",[517,11],{"path":585,"title":586,"description":587,"type":17,"topics":588,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fset-print-area-and-page-setup-with-openpyxl","Set the Print Area and Page Setup with openpyxl","Make a generated workbook print properly: print area, landscape orientation, fit to width, repeated header rows, margins, headers and footers, and page breaks.",[517,11],{"path":590,"title":591,"description":592,"type":17,"topics":593,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fstyle-whole-columns-and-rows-efficiently-with-openpyxl","Style Whole Columns and Rows Efficiently with openpyxl","Format entire columns and rows in large openpyxl workbooks without slowing the script down: what column and row styles actually do (and why they do not restyle cells that already hold data), reusing one Font object instead of creating thousands, named styles for the fastest path, styling only the used range, and checking the rendered result and the file's style count.",[517,11],{"path":595,"title":596,"description":597,"type":17,"topics":598,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fwrap-text-and-align-cells-with-openpyxl","Wrap Text and Align Cells with openpyxl","Make long text readable in a generated Excel report — wrap text inside cells, set row heights that fit the wrapped lines, align text to the top so multi-line rows read cleanly, indent hierarchies, rotate narrow headers, centre a title across columns without merging and shrink text as a last resort.",[517,11],{"path":600,"title":601,"description":602,"type":17,"topics":603,"kind":12},"\u002Fformatting-and-charting-excel-reports-with-python\u002Fstyling-excel-cells-with-openpyxl\u002Fwrite-rich-text-in-a-cell-with-openpyxl","Write Rich Text in a Cell with openpyxl","Put more than one format in a single cell — a red, bold OVERDUE inside a status line, a highlighted keyword in a comment, H₂O and m² with real subscripts and superscripts. Build CellRichText from TextBlock and InlineFont objects, generate it from data, read existing rich text back, and avoid the load-and-save that silently flattens it.",[517,11],{"path":605,"title":606,"description":607,"type":17,"topics":608,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fchoosing-a-python-excel-library\u002Fopenpyxl-vs-pandas-for-excel-automation","openpyxl vs pandas for Excel Automation","pandas reads Excel through openpyxl, so they are not rivals. See where the line falls — rows versus cells — and how to hand off between them in one script.",[609,11,445],"choosing-libraries",{"path":611,"title":612,"description":613,"type":17,"topics":614,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fchoosing-a-python-excel-library\u002Ftranslate-common-vba-macros-to-python","Translate Common VBA Macros to Python","A phrasebook for moving VBA to Python: the eight patterns that make up most Excel macros — finding the last row, looping over rows, deleting rows that match, lookups with a dictionary, filtering and copying, looping over a folder of files, saving a copy with a date, and error handling — each shown in VBA and in pandas or openpyxl.",[615,11],"macros-and-vba",{"path":617,"title":618,"description":619,"type":17,"topics":620,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fchoosing-a-python-excel-library\u002Fwhen-to-use-xlwings-instead-of-openpyxl","When to Use xlwings Instead of openpyxl","xlwings drives a real copy of Excel; openpyxl edits the file. Four jobs justify the cost — recalculation, objects openpyxl drops, live workbooks and native output.",[609,621,11],"xlwings",{"path":623,"title":624,"description":625,"type":17,"topics":626,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fhandling-excel-file-formats-and-conversions\u002Fsave-a-workbook-as-an-excel-template-with-python","Save a Workbook as an Excel Template with Python","Create a real .xltx template with openpyxl — styled headers, input cells, dropdowns, formulas and protection — by setting workbook.template = True, check the content type that makes Excel treat it as a template, and avoid the trap of loading an .xltx and saving it as .xlsx without switching the flag back, which produces a file Excel refuses to open.",[627,79,11],"file-formats",{"path":629,"title":630,"description":631,"type":17,"topics":632,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fhandling-excel-file-formats-and-conversions\u002Fwork-with-macro-enabled-xlsm-files-in-openpyxl","Work with Macro-Enabled .xlsm Files in openpyxl","Edit .xlsm workbooks from Python without destroying the VBA project: the keep_vba flag, why the filename matters, what openpyxl still drops, and how to verify macros survived.",[627,615,11],{"path":634,"title":635,"description":636,"type":17,"topics":637,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Freading-excel-files-with-pandas\u002Fread-a-cell-range-into-a-pandas-dataframe","Read a Cell Range Like B3:F20 into a pandas DataFrame","Pull exactly one block of cells out of a worksheet — a table that starts at B3 and ends at F20, with other content around it. Do it with read_excel's usecols, skiprows and nrows, or with openpyxl and an A1 range string, and turn it into one reusable function.",[106,11,445],{"path":639,"title":640,"description":641,"type":17,"topics":642,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Freading-excel-files-with-pandas\u002Fread-a-named-range-into-pandas","Read a Named Range into pandas","Load the cells behind an Excel named range into a DataFrame: look the name up with openpyxl, resolve workbook- and sheet-scoped names, handle ranges that span several areas or point at #REF!, and read named ranges from files you cannot edit.",[106,184,11],{"path":644,"title":645,"description":646,"type":17,"topics":647,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-at-least-one-sheet-must-be-visible-error","Fix \"At least one sheet must be visible\" in openpyxl and pandas","openpyxl refuses to save a workbook in which no sheet is visible: \"IndexError: At least one sheet must be visible\", or for a single sheet \"The only worksheet of a workbook cannot be hidden\". Both usually come from a pandas ExcelWriter that wrote no DataFrames, or from hiding data sheets. Find which case you have, and guard against empty output.",[648,11],"troubleshooting",{"path":650,"title":651,"description":652,"type":17,"topics":653,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-cannot-convert-to-excel-valueerror","Fix \"ValueError: Cannot convert to Excel\" in openpyxl","openpyxl accepts only values Excel can store — numbers, text, booleans, dates, None. Lists, dicts, sets, UUIDs and pandas' NA raise \"Cannot convert … to Excel\". Find the offending values, convert them deliberately, and write DataFrames without surprises.",[648,268,11],{"path":655,"title":656,"description":657,"type":17,"topics":658,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-data-validation-extension-is-not-supported-warning","Fix the \"Data Validation extension is not supported\" Warning in openpyxl","What openpyxl's \"Data Validation extension is not supported and will be removed\" warning means, when it is harmless, how to silence it narrowly, and how to rebuild the dropdowns it drops before you save the workbook.",[648,106,11],{"path":660,"title":661,"description":662,"type":17,"topics":663,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-excel-repaired-content-after-writing-with-python","Fix \"Excel Found Unreadable Content\" After Writing with Python","Your script saved a workbook and Excel offers to repair it. The rules Excel enforces — sheet names, table names, defined names, timezones — and how to satisfy them.",[648,268,11],{"path":665,"title":666,"description":667,"type":17,"topics":668,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-illegalcharactererror-when-writing-excel-with-openpyxl","Fix IllegalCharacterError When Writing Excel with openpyxl","openpyxl refuses to write text containing control characters such as \\x00 or a vertical tab. Find which cells hold them, decide what each character should become, and clean the data so the write succeeds.",[648,268,11],{"path":670,"title":671,"description":672,"type":17,"topics":673,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-mergedcell-value-is-read-only-in-openpyxl","Fix \"MergedCell object attribute value is read-only\" in openpyxl","openpyxl raises this AttributeError when code writes to a cell that sits inside a merged range. Find the merge, write to its top-left cell, and watch for the less obvious cause — insert_rows and delete_rows move cells but leave merged ranges behind.",[648,11,105],{"path":675,"title":676,"description":677,"type":17,"topics":678,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-name-error-for-new-excel-functions-written-by-python","Fix #NAME? in Formulas Written from Python (XLOOKUP, TEXTJOIN, IFS)","Formulas that work when typed into Excel show #NAME? when openpyxl writes them. Newer functions must be stored with an _xlfn. prefix, and misspelled or localised names, missing defined names and unquoted text cause the same error. Lint every formula before saving.",[648,184,11],{"path":680,"title":681,"description":682,"type":17,"topics":683,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-nonetype-errors-when-reading-cells-with-openpyxl","Fix NoneType Errors When Reading Cells with openpyxl","Why openpyxl hands your code None — empty cells, formulas that were never calculated, merged ranges, trailing formatted rows — and how to fix each one: find which cell is None, skip or default empty values deliberately, get formula results with data_only after a recalculation, and read merged ranges from their top-left cell.",[648,11],{"path":685,"title":686,"description":687,"type":17,"topics":688,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-openpyxl-does-not-support-the-old-xls-format","Fix \"openpyxl does not support the old .xls file format\"","Why openpyxl refuses .xls files, how to read them with xlrd or calamine, how to convert a whole folder to .xlsx, and how to spot a mislabelled file before it fails.",[648,627,11],{"path":690,"title":691,"description":692,"type":17,"topics":693,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-openpyxl-max-row-counting-empty-rows","Fix openpyxl max_row Counting Empty Rows","ws.max_row reports 2,000 on a sheet with six rows of data, and ws.append() writes far below the table. Learn the three things that inflate max_row — formatted cells, cells created by reading, and stale dimension tags — and how to find and fix the real last row.",[648,11,157],{"path":695,"title":696,"description":697,"type":17,"topics":698,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-openpyxl-typeerror-expected-class","Fix openpyxl \"TypeError: expected \u003Cclass ...>\"","openpyxl checks the type of every style, chart and dimension attribute, and raises \"TypeError: expected \u003Cclass 'float'>\" or \"expected \u003Cclass 'openpyxl.styles.fills.Fill'>\" when it gets the wrong kind of value. Read the class name, find the assignment, and pass the right object — including the case where the error only appears at save time, far from the line that caused it.",[648,11],{"path":700,"title":701,"description":702,"type":17,"topics":703,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-openpyxl-value-must-be-one-of-errors","Fix openpyxl \"Value must be one of\" and \"Max value is\" Errors","openpyxl validates style and settings values against the names Excel uses internally, so Side(style=\"bold\"), Alignment(horizontal=\"middle\"), PatternFill(\"Solid\") and orientation=\"Landscape\" all fail with ValueError: Value must be one of {...}. Translate the familiar names to the accepted ones, use openpyxl's constants, handle \"Max value is\" and colour errors, and watch for values that are only checked at save time — after half a file has been written.",[648,11,517],{"path":705,"title":706,"description":707,"type":17,"topics":708,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-readonlyworksheet-has-no-attribute-errors-in-openpyxl","Fix ReadOnlyWorksheet Has No Attribute Errors in openpyxl","Switching to load_workbook(read_only=True) for speed breaks code that used iter_cols, merged_cells, column_dimensions, comments, hyperlinks or writes — and EmptyCell objects have no coordinate. See exactly what read-only mode supports, rewrite column access and gap handling for streaming, get the missing metadata from a second normal load, and know when read-only is the wrong mode.",[648,11,157],{"path":710,"title":711,"description":712,"type":17,"topics":713,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-workbook-contains-no-default-style-warning","Fix \"Workbook contains no default style\" Warning in openpyxl","openpyxl warns \"Workbook contains no default style, apply openpyxl's default\" when a file's stylesheet lacks a Normal style. The data is fine — but the related \"no stylesheet\" warning can turn dates into numbers. Tell them apart, silence the harmless one precisely and repair the files.",[648,106,11],{"path":715,"title":716,"description":717,"type":17,"topics":718,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Ftroubleshooting-common-python-excel-errors\u002Ffix-worksheet-does-not-exist-keyerror-in-openpyxl","Fix \"Worksheet Does Not Exist\" KeyError in openpyxl","Why openpyxl raises KeyError on a sheet you can see in Excel: hidden whitespace, case, renamed tabs and index confusion — plus a resilient sheet lookup helper.",[648,719,11],"sheets-and-files",{"path":721,"title":722,"description":723,"type":8,"topics":724,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation","Using openpyxl for Excel File Manipulation","A runnable, step-by-step guide to creating, reading, editing, styling, and saving .xlsx files with openpyxl — workbooks, sheets, cells, formatting, and images.",[11,106,268],{"path":726,"title":727,"description":728,"type":17,"topics":729,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fclear-cell-contents-and-formatting-with-openpyxl","Clear Cell Contents and Formatting with openpyxl","Reproduce Excel's Clear menu in Python: clear values but keep formatting, reset formatting but keep values, remove comments and hyperlinks, or clear everything. Covers clearing a template's input area while keeping its formulas, and why merged cells make a simple clearing loop fail.",[11,517,79],{"path":731,"title":732,"description":733,"type":17,"topics":734,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fconvert-column-letters-and-numbers-with-openpyxl","Convert Excel Column Letters and Numbers in Python","Turn 28 into \"AB\" and \"XFD\" into 16384 with openpyxl's get_column_letter and column_index_from_string, parse cell and range addresses, and map DataFrame columns to letters for formulas — plus why naive base-26 code breaks at Z and the 0-based\u002F1-based traps between pandas, openpyxl and xlsxwriter.",[11,184,268],{"path":736,"title":737,"description":738,"type":17,"topics":739,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fcopy-cell-styles-with-openpyxl","Copy Cell Styles from One Cell to Another with openpyxl","Copy fonts, fills, borders, alignment and number formats between cells with openpyxl — within a sheet, across sheets and between workbooks — plus column widths, row heights and whole-row formatting for new data.",[517,11],{"path":741,"title":742,"description":743,"type":17,"topics":744,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fdelete-empty-rows-and-columns-with-openpyxl","Delete Empty Rows and Columns with openpyxl","Remove blank rows and columns from a worksheet in place while keeping its formatting: detect empty rows without creating cells, delete them in runs from the bottom up, handle empty columns, repair row heights, merged cells and formulas that delete_rows leaves behind, and switch to a copy-based rebuild when the sheet is large.",[11,67],{"path":746,"title":747,"description":748,"type":17,"topics":749,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Ffind-and-replace-text-in-excel-with-openpyxl","Find and Replace Text in Excel with openpyxl","Replace a company name, a product code or a year across every sheet of a workbook without losing formatting: plain and regex replacement, formulas left intact, rich text preserved, and a log of every change.",[268,11],{"path":751,"title":752,"description":753,"type":17,"topics":754,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Ffind-the-last-row-with-data-in-openpyxl","Find the Last Row with Data in openpyxl","ws.max_row counts formatted empty cells, stale dimensions and cells you merely looked at. Find the real last row with data — for the whole sheet or one column — and append in the right place.",[106,11],{"path":756,"title":757,"description":758,"type":17,"topics":759,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fhow-openpyxl-stores-python-values-in-cells","How openpyxl Stores Python Values: Types, Dates and None","What happens to an int, a bool, a date, a Decimal, a NumPy value or a timezone-aware datetime when you assign it to an openpyxl cell — the cell type it becomes, the number format it gets, what comes back when the file is reopened, and which values fail only when you save.",[11,268,73],{"path":761,"title":762,"description":763,"type":17,"topics":764,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Finsert-and-delete-rows-and-columns-with-openpyxl","Insert and Delete Rows and Columns with openpyxl","Add and remove rows and columns in an existing Excel file with openpyxl — insert_rows, delete_cols, why formulas and merges do not move, and safe deletion in reverse order.",[268,11],{"path":766,"title":767,"description":768,"type":17,"topics":769,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fiterate-over-rows-and-columns-with-openpyxl","Iterate over Rows and Columns with openpyxl","Walk an Excel sheet cell by cell in Python — iter_rows and iter_cols, values_only, bounded ranges, the max_row trap, and building dicts keyed by header name.",[106,11],{"path":771,"title":772,"description":773,"type":17,"topics":774,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fmerge-repeated-group-labels-into-single-cells-with-openpyxl","Merge Repeated Group Labels into Single Cells with openpyxl","Turn a report where the region name repeats on every row into one merged, vertically centred label per group: find runs of equal values, merge them with openpyxl, handle nested groups so an inner label never spans two outer groups, keep borders tidy, and know when to hide repeats with conditional formatting instead so the sheet stays sortable.",[11,79,517],{"path":776,"title":777,"description":778,"type":17,"topics":779,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fmove-a-range-of-cells-with-openpyxl","Move a Range of Cells with openpyxl move_range","Shift a block of cells to a new position with ws.move_range: values and styles move, translate=True rewrites formulas inside the block, and everything else — formulas that point at the block, merged cells, conditional formats — stays where it was. Learn the rules and a safe way to move a table.",[11,184,79],{"path":781,"title":782,"description":783,"type":17,"topics":784,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fopenpyxl-append-data-to-existing-excel-sheet","openpyxl: Append Data to an Existing Excel Sheet","Add new rows to an existing .xlsx file with openpyxl — using ws.append(), explicit row indexing, dict-based sparse appends, type-safe values, and atomic saves.",[268,11],{"path":786,"title":787,"description":788,"type":17,"topics":789,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fread-cell-value-from-excel-with-openpyxl","Read a Cell Value From Excel With openpyxl","Read Excel cell values with openpyxl: load_workbook, ws['B2'].value, ws.cell(), iter_rows, ranges, and data_only for cached formula results instead of formula text.",[106,11],{"path":791,"title":792,"description":793,"type":17,"topics":794,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fread-excel-rows-into-dictionaries-with-openpyxl","Read Excel Rows into Dictionaries with openpyxl","Turn each row of a sheet into a dictionary keyed by the header — the csv.DictReader pattern for .xlsx files. Stream rows with iter_rows(values_only=True), skip blank rows, clean up missing and duplicate headers, build lookups keyed by ID, and load rows into dataclasses without pandas.",[11,106],{"path":796,"title":797,"description":798,"type":17,"topics":799,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fset-the-active-sheet-and-tab-colour-with-openpyxl","Set the Active Sheet, Selected Cell and Tab Colours with openpyxl","Decide what a reader sees when a generated workbook opens: which sheet is in front, which cell is selected, where the view is scrolled to, and which tabs are coloured. Includes the trap that leaves two sheets grouped after wb.active changes, and the xlsxwriter equivalents.",[79,11,719],{"path":801,"title":802,"description":803,"type":17,"topics":804,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fset-workbook-properties-with-python","Set Workbook Properties Like Author and Title with Python","Give generated workbooks a proper title, author, company, keywords and custom properties such as the data source or row count. See what openpyxl and xlsxwriter can set, which fields each one overwrites on save, and how to read the properties back for auditing.",[79,11,553],{"path":806,"title":807,"description":808,"type":17,"topics":809,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Ftranspose-a-range-of-cells-with-openpyxl","Transpose a Range of Cells with openpyxl","Swap rows and columns in a worksheet from Python: transpose values with zip, carry fonts, fills, borders and number formats across, handle merged cells and column widths, transpose with pandas when styles do not matter, and write a live TRANSPOSE array formula instead of a copy.",[11,105],{"path":811,"title":812,"description":813,"type":17,"topics":814,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Funmerge-cells-and-fill-values-with-openpyxl","Unmerge Cells and Fill the Values with openpyxl","Turn merged cells into a proper table — find every merged range, unmerge it, copy the top-left value into each cell, keep the formatting, and handle the read-only and pandas cases where merge information is missing.",[105,11],{"path":816,"title":817,"description":818,"type":17,"topics":819,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fuse-theme-colours-and-tints-in-openpyxl","Use Theme Colours and Tints in openpyxl","Colour Excel cells with the workbook theme instead of fixed RGB values using openpyxl: theme colour indexes and the swapped order of the first four, tints that lighten and darken like Excel's palette, resolving theme colours to hex for checks and HTML, and rebranding a whole report by changing the theme's accent colours — verified against a rendered copy.",[11,517],{"path":821,"title":822,"description":823,"type":17,"topics":824,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-openpyxl-for-excel-file-manipulation\u002Fwhat-openpyxl-loses-when-saving-an-existing-workbook","What openpyxl Loses When You Save an Existing Workbook","openpyxl rewrites the whole file when it saves, and features it does not model disappear — sparklines, shapes and text boxes, data-bar and validation extensions, macros, slicers. Tested list, a pre-save risk scan, and safer alternatives.",[648,268,11],{"path":826,"title":827,"description":828,"type":17,"topics":829,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fusing-python-in-excel\u002Fpython-in-excel-vs-openpyxl-and-xlwings","Python in Excel vs openpyxl and xlwings","Python in Excel runs code inside a cell; openpyxl and pandas write files from a script; xlwings drives the Excel application. Compare where each runs, what it can reach and which jobs it suits.",[830,621,609,11],"python-in-excel",{"path":832,"title":833,"description":834,"type":17,"topics":835,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fadd-sum-and-average-formulas-with-python","Add SUM and AVERAGE Formulas with Python","Generate SUM, AVERAGE, SUBTOTAL and conditional aggregate formulas from Python so a total row always covers the data you just wrote, however many rows there are.",[184,11],{"path":837,"title":838,"description":839,"type":17,"topics":840,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Faudit-every-formula-in-a-workbook-with-python","Audit Every Formula in a Workbook with Python","Build an inventory of every formula in a workbook — which functions it uses, which sheets and external files it depends on, which numbers are hard-coded in it — then find the inconsistent formula in a column of identical ones and the value someone typed over a formula. Output the audit as its own sheet.",[184,55,11],{"path":842,"title":843,"description":844,"type":17,"topics":845,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fconvert-excel-formulas-to-values-with-python","Convert Excel Formulas to Values with Python","Freeze a workbook's formulas into static values with openpyxl while keeping every style, plus the LibreOffice recalculation step for files Excel has never opened.",[184,11],{"path":847,"title":848,"description":849,"type":17,"topics":850,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fcopy-formula-down-a-column-in-openpyxl","Copy a Formula Down a Column in openpyxl","Fill a formula down every data row from Python — generating references per row, translating an existing formula with openpyxl's Translator, and copying the source cell's style.",[184,11],{"path":852,"title":853,"description":854,"type":17,"topics":855,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fcreate-named-range-in-excel-with-openpyxl","Create a Named Range in Excel with openpyxl","Add workbook-wide and sheet-local defined names with openpyxl, point them at ranges or single cells, use them in formulas and charts, and list or delete them safely.",[184,11],{"path":857,"title":858,"description":859,"type":17,"topics":860,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Ffind-external-links-and-broken-references-in-a-workbook","Find External Links and Broken References in a Workbook with Python","Audit a workbook for links to other files and for #REF! errors — in cell formulas, defined names, data validation and conditional formatting — with openpyxl and the zip file itself, then report them or replace them with values.",[184,648,11],{"path":862,"title":863,"description":864,"type":17,"topics":865,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Ffind-formula-errors-in-a-workbook-with-python","Find #REF!, #DIV\u002F0! and Other Formula Errors in a Workbook","pandas turns formula errors into NaN, so a broken workbook can look merely incomplete. Scan every sheet with openpyxl for cells whose cached value is an error, catch #REF! inside formula text even without a recalculation, and fail a report job before it sends a workbook full of errors.",[184,55,11],{"path":867,"title":868,"description":869,"type":17,"topics":870,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fmap-formula-dependencies-in-a-workbook-with-python","Map Formula Dependencies in a Workbook with Python","Trace precedents and dependents across every sheet of a workbook without Excel: parse formulas with openpyxl's Tokenizer, resolve cross-sheet references and named ranges, build a dependency graph, list what feeds a result and what a changed input affects, find unused inputs and circular references, and write the map to a sheet.",[184,11],{"path":872,"title":873,"description":874,"type":17,"topics":875,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fread-formula-results-with-openpyxl-data-only","Read Formula Results with openpyxl data_only","Why openpyxl returns None for formula cells with data_only=True, how cached values really work, and four reliable ways to get the numbers a workbook is supposed to contain.",[184,106,11],{"path":877,"title":878,"description":879,"type":17,"topics":880,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fuse-structured-table-references-in-formulas-from-python","Use Structured Table References in Excel Formulas from Python","Write formulas that refer to Excel table columns by name — =SUM(Sales[Total]), calculated columns, SUMIFS over table columns — from openpyxl and xlsxwriter, including the [@Column] shorthand that must be written out in full.",[184,404,11],{"path":882,"title":883,"description":884,"type":17,"topics":885,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fwrite-dynamic-array-formulas-with-python","Write Dynamic Array Formulas like FILTER and UNIQUE from Python","Write spilling Excel formulas — FILTER, UNIQUE, SORT, SEQUENCE, XLOOKUP — from Python so they work when the file opens. Why openpyxl output shows #NAME? or an @, what the _xlfn prefix and array metadata are, and how xlsxwriter handles both.",[184,11,553],{"path":887,"title":888,"description":889,"type":17,"topics":890,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fwrite-formula-to-excel-cell-with-openpyxl","Write a Formula to an Excel Cell with openpyxl","Assign a formula string to a cell with openpyxl, avoid the Text-format trap that shows the formula instead of a result, and verify what actually landed in the file.",[184,268,11],{"path":892,"title":893,"description":894,"type":17,"topics":895,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fwrite-formulas-that-reference-other-sheets-with-openpyxl","Write Formulas That Reference Other Sheets with openpyxl","Link a summary sheet to its data sheets with formulas like =SUM('Sales Data'!B2:B50). Learn the quoting rules for sheet names with spaces and apostrophes, build references with a helper instead of f-strings, and avoid the openpyxl trap where renaming a sheet silently breaks every formula that pointed at it.",[184,11,719],{"path":897,"title":898,"description":899,"type":17,"topics":900,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fwrite-legacy-array-formulas-with-openpyxl","Write Legacy Array Formulas (Ctrl+Shift+Enter) with openpyxl","Some formulas only work as array formulas — SUM over a product of two ranges, MAX(IF(...)) with a condition — and written as ordinary formulas they silently return the first row's answer. Write them with openpyxl's ArrayFormula for one cell or a block, read them back, write them with XlsxWriter, verify the results with LibreOffice, and know when a dynamic array formula is the better choice.",[184,11],{"path":902,"title":903,"description":904,"type":17,"topics":905,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fwrite-let-and-lambda-formulas-from-python","Write LET and LAMBDA Formulas from Python","LET and LAMBDA written from openpyxl or xlsxwriter show #NAME? unless they are stored the way Excel stores them: _xlfn. before the function and _xlpm. before every parameter name. A helper that builds the stored form, named LAMBDA functions as defined names, and how to check the result.",[184,11],{"path":907,"title":908,"description":909,"type":17,"topics":910,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-excel-formulas-in-python\u002Fwrite-lookup-formulas-with-openpyxl","Write Lookup Formulas (XLOOKUP, VLOOKUP, INDEX\u002FMATCH) with openpyxl","Generate live lookup formulas that pull prices, names or rates from another sheet: VLOOKUP with an exact match, INDEX\u002FMATCH, and XLOOKUP — which must be written with the _xlfn prefix or it shows #NAME? — plus absolute ranges that survive copying, not-found handling, tiered approximate matches, a named lookup range, and a LibreOffice check that every formula returns what pandas expects.",[184,61,11],{"path":912,"title":913,"description":914,"type":8,"topics":915,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python","Working with Multiple Excel Sheets in Python","Read, transform, and write multi-sheet Excel workbooks with pandas and openpyxl — load all tabs into a dict, merge across sheets, and export to named sheets.",[719,445,11],{"path":917,"title":918,"description":919,"type":17,"topics":920,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Fapply-the-same-change-to-every-sheet-in-a-workbook","Apply the Same Change to Every Sheet in a Workbook","Make one change across every worksheet of a workbook — or of a folder of workbooks — with openpyxl: style the header row, freeze it, set number formats by column heading, add a footer and a print setup, while skipping chart sheets, hidden sheets and sheets that do not have the expected layout, logging what was changed on each sheet and making the run safe to repeat.",[719,11],{"path":922,"title":923,"description":924,"type":17,"topics":925,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Fcopy-a-sheet-between-excel-workbooks-with-python","Copy a Sheet Between Excel Workbooks with Python","openpyxl's copy_worksheet only works inside one workbook — here is what actually happens when you copy across files, how to carry values and styles over, and when to copy the file instead.",[719,11],{"path":927,"title":928,"description":929,"type":17,"topics":930,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Flist-every-sheet-with-its-size-and-visibility","List Every Sheet with Its Size and Visibility","Produce an inventory of a workbook, or a folder of workbooks, with one row per sheet: visible, hidden or very hidden, chart sheet or worksheet, the used range Excel reports against the range that actually holds data, counts of formulas, tables, charts, images, merged cells and validation rules, protection, and the space each sheet takes inside the file — written to an Excel report.",[719,11],{"path":932,"title":933,"description":934,"type":17,"topics":935,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Fmerge-workbooks-into-one-file-with-a-sheet-per-source","Merge Workbooks into One File with a Sheet per Source","Collect a folder of workbooks into a single file where each source keeps its own tab: turn file names into valid, unique sheet names under the 31-character limit, copy values quickly with pandas or copy values, styles, widths and merged cells with openpyxl, handle source files with several sheets, and add an index sheet that links to every tab.",[719,11],{"path":937,"title":938,"description":939,"type":17,"topics":940,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Frename-reorder-and-delete-excel-sheets-with-openpyxl","Rename, Reorder and Delete Excel Sheets with openpyxl","Sheet housekeeping that does not break the workbook: the 31-character title rules, move_sheet and the index list, safe deletion, hiding instead of removing, and which tab opens first.",[719,11],{"path":942,"title":943,"description":944,"type":17,"topics":945,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Fsave-each-sheet-of-a-workbook-as-a-separate-file","Save Each Sheet of a Workbook as a Separate File","Split a workbook into one .xlsx file per sheet while keeping each sheet's formatting: remove the other sheets with openpyxl, freeze formulas that point at sheets that will no longer exist, drop defined names that would dangle, make hidden sheets visible, build safe file names, and know when a values-only split with pandas or a full-fidelity split through Excel is the better tool.",[719,11],{"path":947,"title":948,"description":949,"type":17,"topics":950,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Fsearch-every-sheet-and-workbook-for-a-value","Search Every Sheet and Workbook in a Folder for a Value","Find which workbook, sheet and cell contain an invoice number, a customer name or a pattern across a whole folder of Excel files. Match exactly, by substring or by regular expression, treat 1042 and \"1042\" as the same, skip lock files and broken files, and search thousands of workbooks quickly in read-only mode.",[719,11,157],{"path":952,"title":953,"description":954,"type":17,"topics":955,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fworking-with-multiple-excel-sheets-in-python\u002Fsum-the-same-cell-across-sheets-with-3d-references","Sum the Same Cell Across Many Sheets with 3D References from Python","Build a summary sheet that totals the same cell on every monthly or regional tab with Excel 3D references like =SUM(Jan:Dec!B2), written from Python with openpyxl — bookend sheets, quoting rules, inserting new tabs in the right place, and which functions support 3D ranges.",[719,184,11],{"path":957,"title":958,"description":959,"type":17,"topics":960,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fwriting-dataframes-to-excel-with-pandas\u002Fopenpyxl-vs-xlsxwriter-vs-pandas-excelwriter","openpyxl vs xlsxwriter vs pandas.ExcelWriter","Understand how pandas.ExcelWriter wraps the openpyxl and xlsxwriter engines, when each one wins, and write the same DataFrame three ways with a clear decision table.",[609,268,553,11,445],{"path":962,"title":963,"description":964,"type":17,"topics":965,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fwriting-dataframes-to-excel-with-pandas\u002Fwrite-a-list-of-dictionaries-to-excel-without-pandas","Write a List of Dictionaries to Excel Without pandas","Write records from an API, a database cursor or your own code straight to .xlsx with openpyxl: a header from the union of keys, missing keys left blank, nested values flattened, dates and decimals kept as real Excel types, write-only mode for large lists, and a formatted table at the end.",[268,11],1790972052271]