<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Excel File from Databricks Not Auto-Adjusting Columns in Power Automate Email Attachment in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/136629#M50614</link>
    <description>&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Yes, this is a common challenge when automating Excel file generation—the default export (especially from pandas or Databricks) does&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;not&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;auto-fit column widths, resulting in cramped columns when viewed or emailed. Auto-fitting columns typically requires an explicit command or script in your workflow. Reliable solutions exist in both Python and Power Automate/Office Scripts contexts.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Python-Based Solutions:&amp;nbsp;openpyxl / xlsxwriter&lt;/H2&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;When exporting to Excel from Databricks using pandas’&amp;nbsp;&lt;CODE&gt;to_excel&lt;/CODE&gt;, you can post-process the output file with&amp;nbsp;&lt;CODE&gt;openpyxl&lt;/CODE&gt;&amp;nbsp;or&amp;nbsp;&lt;CODE&gt;xlsxwriter&lt;/CODE&gt;&amp;nbsp;to auto-size columns:&lt;/P&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;openpyxl&lt;/STRONG&gt;: Load the file, then iterate through columns to set the width based on max content length.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;xlsxwriter&lt;/STRONG&gt;: When writing the file, use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;worksheet.set_column()&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to fit columns.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Example using openpyxl:&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="w-full md:max-w-[90vw]"&gt;
&lt;DIV class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded font-mono text-sm font-normal bg-subtler"&gt;
&lt;DIV class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end md:sticky md:top-[100px]"&gt;
&lt;DIV class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"&gt;
&lt;DIV class="border-subtlest ring-subtlest divide-subtlest bg-subtler"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="-mt-xl"&gt;
&lt;DIV&gt;
&lt;DIV class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-[3px] font-thin" data-testid="code-language-indicator"&gt;python&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;CODE&gt;&lt;SPAN class="token token"&gt;from&lt;/SPAN&gt; openpyxl &lt;SPAN class="token token"&gt;import&lt;/SPAN&gt; load_workbook

&lt;SPAN class="token token"&gt;def&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;autofit_columns&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;filename&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
    wb &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; load_workbook&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;filename&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
    ws &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; wb&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;active
    &lt;SPAN class="token token"&gt;for&lt;/SPAN&gt; col &lt;SPAN class="token token"&gt;in&lt;/SPAN&gt; ws&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;columns&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
        max_length &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;0&lt;/SPAN&gt;
        col_letter &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; col&lt;SPAN class="token token punctuation"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;]&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;column_letter
        &lt;SPAN class="token token"&gt;for&lt;/SPAN&gt; cell &lt;SPAN class="token token"&gt;in&lt;/SPAN&gt; col&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="token token"&gt;try&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
                &lt;SPAN class="token token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;len&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;str&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;cell&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;value&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token token operator"&gt;&amp;gt;&lt;/SPAN&gt; max_length&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
                    max_length &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;len&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;str&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;cell&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;value&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="token token"&gt;except&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
                &lt;SPAN class="token token"&gt;pass&lt;/SPAN&gt;
        adjusted_width &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; max_length &lt;SPAN class="token token operator"&gt;+&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;2&lt;/SPAN&gt;
        ws&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;column_dimensions&lt;SPAN class="token token punctuation"&gt;[&lt;/SPAN&gt;col_letter&lt;SPAN class="token token punctuation"&gt;]&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;width &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; adjusted_width
    wb&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;save&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;filename&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="token token"&gt;# After pandas to_excel:&lt;/SPAN&gt;
autofit_columns&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;'your_file.xlsx'&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;This reliably fixes the column width issue regardless of export source.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Power Automate / Office Scripts&lt;/H2&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;If your Excel file is generated and stored in OneDrive/SharePoint, you can use an&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Office Script&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in Power Automate to auto-fit columns before the email is sent.&lt;/P&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Example Office Script:&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="w-full md:max-w-[90vw]"&gt;
&lt;DIV class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded font-mono text-sm font-normal bg-subtler"&gt;
&lt;DIV class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end md:sticky md:top-[100px]"&gt;
&lt;DIV class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"&gt;
&lt;DIV class="border-subtlest ring-subtlest divide-subtlest bg-subtler"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="-mt-xl"&gt;
&lt;DIV&gt;
&lt;DIV class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-[3px] font-thin" data-testid="code-language-indicator"&gt;typescript&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;CODE&gt;&lt;SPAN class="token token"&gt;function&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;main&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;workbook&lt;SPAN class="token token operator"&gt;:&lt;/SPAN&gt; ExcelScript&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;Workbook&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token token punctuation"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="token token"&gt;let&lt;/SPAN&gt; ws &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; workbook&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;getActiveWorksheet&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;;&lt;/SPAN&gt;
  ws&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;getUsedRange&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;getFormat&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;autofitColumns&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token token punctuation"&gt;}&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;You can run this script in Power Automate using the "Run Script" action after the file is created and before the file is emailed.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Best Practice Workflow&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Python method:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Generate Excel → run autofit post-process → upload/send.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Power Automate method:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Generate Excel → upload to cloud storage → run Office Script to autofit → email file.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Community and Reliability&lt;/H2&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Many users in forums (Microsoft, Stack Overflow, Databricks) confirm both methods are reliable fixes. Office Scripts are especially robust for cloud-based workflows; Python works well for on-prem or hybrid flows.&lt;/P&gt;
&lt;HR /&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;In summary:&lt;/STRONG&gt;&lt;BR /&gt;Auto-fit is not applied by default; use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;openpyxl&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;or&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;xlsxwriter&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in Python or Office Scripts in Power Automate to reliably fix column widths in Excel exports before sending.&lt;/P&gt;</description>
    <pubDate>Wed, 29 Oct 2025 20:17:37 GMT</pubDate>
    <dc:creator>mark_ott</dc:creator>
    <dc:date>2025-10-29T20:17:37Z</dc:date>
    <item>
      <title>Excel File from Databricks Not Auto-Adjusting Columns in Power Automate Email Attachment</title>
      <link>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/120675#M46220</link>
      <description>&lt;P&gt;Hi community,&lt;/P&gt;&lt;P&gt;I've built an automation workflow using &lt;STRONG&gt;Databricks&lt;/STRONG&gt; and &lt;STRONG&gt;Power Automate&lt;/STRONG&gt;. The process runs a query in Databricks, exports the result to Excel, auto-adjusts the columns based on the header/content, and then Power Automate picks up the file and sends it via email.&lt;/P&gt;&lt;P&gt;Everything is working as expected &lt;STRONG&gt;except&lt;/STRONG&gt; that the &lt;STRONG&gt;column auto-adjust&lt;/STRONG&gt; in the Excel file is no longer applying correctly — the attachment comes through with unformatted (narrow) columns.&lt;/P&gt;&lt;P&gt;Has anyone faced a similar issue or found a reliable way to auto-fit Excel columns either within Databricks (Python) or as part of the Power Automate process?&lt;/P&gt;&lt;P&gt;Open to both Python-based solutions (e.g., using openpyxl or xlsxwriter) or Power Automate options like Office Scripts.&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;</description>
      <pubDate>Sun, 01 Jun 2025 22:42:13 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/120675#M46220</guid>
      <dc:creator>DataP1</dc:creator>
      <dc:date>2025-06-01T22:42:13Z</dc:date>
    </item>
    <item>
      <title>Re: Excel File from Databricks Not Auto-Adjusting Columns in Power Automate Email Attachment</title>
      <link>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/121179#M46367</link>
      <description>&lt;P&gt;You can try,&amp;nbsp;Office Scripts, "sheet.getUsedRange().getFormat().autofitColumns()" but it requires&amp;nbsp;Microsoft 365 Business Standard, E3, E5, or Education license. Most enterprises would have this, please contact your IT dept to enable&amp;nbsp;Office Scripts in the Microsoft 365 Admin Center.&lt;/P&gt;&lt;P&gt;Orelse, you&amp;nbsp;can handle column auto-width, using openpyxl,&amp;nbsp;&lt;STRONG&gt;entirely within Databricks&lt;/STRONG&gt; before the file gets passed to Power Automate, no Office Scripts needed, no Excel Online dependency.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Convert Spark DataFrame to Pandas&lt;/LI&gt;&lt;LI&gt;Write headers and data to an Excel worksheet&lt;/LI&gt;&lt;LI&gt;Calculate max content length per column&lt;/LI&gt;&lt;LI&gt;Apply dynamic column widths using openpyxl.utils.get_column_letter&lt;/LI&gt;&lt;LI&gt;Save the file to DBFS or preferred location for PowerAutomate to pikup.&lt;/LI&gt;&lt;/OL&gt;</description>
      <pubDate>Sat, 07 Jun 2025 07:56:52 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/121179#M46367</guid>
      <dc:creator>niteshm</dc:creator>
      <dc:date>2025-06-07T07:56:52Z</dc:date>
    </item>
    <item>
      <title>Re: Excel File from Databricks Not Auto-Adjusting Columns in Power Automate Email Attachment</title>
      <link>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/121185#M46369</link>
      <description>&lt;P&gt;I was actually playing with this almost this exact issue last week in Databricks/Python.&lt;BR /&gt;I found xlsxwriter was really easy to set up - the simplest way was to just convert it to a table. The code in their example Pandas table is very simple to update:&amp;nbsp;&lt;A href="https://xlsxwriter.readthedocs.io/example_pandas_table.html" target="_blank"&gt;https://xlsxwriter.readthedocs.io/example_pandas_table.html&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Not sure if you need the full table or can get away with&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;worksheet&lt;/SPAN&gt;&lt;SPAN&gt;.autofit()&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;If you want to be very fancy, you can also specify column widths for each column. Since we're sending out Excel files for people to print, we did that so everything would be inside a standard page width.&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 07 Jun 2025 14:24:12 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/121185#M46369</guid>
      <dc:creator>Kayla</dc:creator>
      <dc:date>2025-06-07T14:24:12Z</dc:date>
    </item>
    <item>
      <title>Re: Excel File from Databricks Not Auto-Adjusting Columns in Power Automate Email Attachment</title>
      <link>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/136629#M50614</link>
      <description>&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Yes, this is a common challenge when automating Excel file generation—the default export (especially from pandas or Databricks) does&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;not&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;auto-fit column widths, resulting in cramped columns when viewed or emailed. Auto-fitting columns typically requires an explicit command or script in your workflow. Reliable solutions exist in both Python and Power Automate/Office Scripts contexts.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Python-Based Solutions:&amp;nbsp;openpyxl / xlsxwriter&lt;/H2&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;When exporting to Excel from Databricks using pandas’&amp;nbsp;&lt;CODE&gt;to_excel&lt;/CODE&gt;, you can post-process the output file with&amp;nbsp;&lt;CODE&gt;openpyxl&lt;/CODE&gt;&amp;nbsp;or&amp;nbsp;&lt;CODE&gt;xlsxwriter&lt;/CODE&gt;&amp;nbsp;to auto-size columns:&lt;/P&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;openpyxl&lt;/STRONG&gt;: Load the file, then iterate through columns to set the width based on max content length.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;xlsxwriter&lt;/STRONG&gt;: When writing the file, use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;worksheet.set_column()&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to fit columns.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Example using openpyxl:&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="w-full md:max-w-[90vw]"&gt;
&lt;DIV class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded font-mono text-sm font-normal bg-subtler"&gt;
&lt;DIV class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end md:sticky md:top-[100px]"&gt;
&lt;DIV class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"&gt;
&lt;DIV class="border-subtlest ring-subtlest divide-subtlest bg-subtler"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="-mt-xl"&gt;
&lt;DIV&gt;
&lt;DIV class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-[3px] font-thin" data-testid="code-language-indicator"&gt;python&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;CODE&gt;&lt;SPAN class="token token"&gt;from&lt;/SPAN&gt; openpyxl &lt;SPAN class="token token"&gt;import&lt;/SPAN&gt; load_workbook

&lt;SPAN class="token token"&gt;def&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;autofit_columns&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;filename&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
    wb &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; load_workbook&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;filename&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
    ws &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; wb&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;active
    &lt;SPAN class="token token"&gt;for&lt;/SPAN&gt; col &lt;SPAN class="token token"&gt;in&lt;/SPAN&gt; ws&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;columns&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
        max_length &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;0&lt;/SPAN&gt;
        col_letter &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; col&lt;SPAN class="token token punctuation"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;]&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;column_letter
        &lt;SPAN class="token token"&gt;for&lt;/SPAN&gt; cell &lt;SPAN class="token token"&gt;in&lt;/SPAN&gt; col&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="token token"&gt;try&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
                &lt;SPAN class="token token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;len&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;str&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;cell&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;value&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token token operator"&gt;&amp;gt;&lt;/SPAN&gt; max_length&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
                    max_length &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;len&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;str&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;cell&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;value&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="token token"&gt;except&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
                &lt;SPAN class="token token"&gt;pass&lt;/SPAN&gt;
        adjusted_width &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; max_length &lt;SPAN class="token token operator"&gt;+&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;2&lt;/SPAN&gt;
        ws&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;column_dimensions&lt;SPAN class="token token punctuation"&gt;[&lt;/SPAN&gt;col_letter&lt;SPAN class="token token punctuation"&gt;]&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;width &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; adjusted_width
    wb&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;save&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;filename&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="token token"&gt;# After pandas to_excel:&lt;/SPAN&gt;
autofit_columns&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;'your_file.xlsx'&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;This reliably fixes the column width issue regardless of export source.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Power Automate / Office Scripts&lt;/H2&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;If your Excel file is generated and stored in OneDrive/SharePoint, you can use an&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Office Script&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in Power Automate to auto-fit columns before the email is sent.&lt;/P&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Example Office Script:&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="w-full md:max-w-[90vw]"&gt;
&lt;DIV class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded font-mono text-sm font-normal bg-subtler"&gt;
&lt;DIV class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end md:sticky md:top-[100px]"&gt;
&lt;DIV class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"&gt;
&lt;DIV class="border-subtlest ring-subtlest divide-subtlest bg-subtler"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="-mt-xl"&gt;
&lt;DIV&gt;
&lt;DIV class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-[3px] font-thin" data-testid="code-language-indicator"&gt;typescript&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;CODE&gt;&lt;SPAN class="token token"&gt;function&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;main&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;workbook&lt;SPAN class="token token operator"&gt;:&lt;/SPAN&gt; ExcelScript&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;Workbook&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token token punctuation"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="token token"&gt;let&lt;/SPAN&gt; ws &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; workbook&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;getActiveWorksheet&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;;&lt;/SPAN&gt;
  ws&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;getUsedRange&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;getFormat&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;autofitColumns&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token token punctuation"&gt;}&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;You can run this script in Power Automate using the "Run Script" action after the file is created and before the file is emailed.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Best Practice Workflow&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Python method:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Generate Excel → run autofit post-process → upload/send.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Power Automate method:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Generate Excel → upload to cloud storage → run Office Script to autofit → email file.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Community and Reliability&lt;/H2&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Many users in forums (Microsoft, Stack Overflow, Databricks) confirm both methods are reliable fixes. Office Scripts are especially robust for cloud-based workflows; Python works well for on-prem or hybrid flows.&lt;/P&gt;
&lt;HR /&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;In summary:&lt;/STRONG&gt;&lt;BR /&gt;Auto-fit is not applied by default; use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;openpyxl&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;or&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;xlsxwriter&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in Python or Office Scripts in Power Automate to reliably fix column widths in Excel exports before sending.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Oct 2025 20:17:37 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/excel-file-from-databricks-not-auto-adjusting-columns-in-power/m-p/136629#M50614</guid>
      <dc:creator>mark_ott</dc:creator>
      <dc:date>2025-10-29T20:17:37Z</dc:date>
    </item>
  </channel>
</rss>

