পান্ডাসের সাথে এক্সেল কলামের প্রস্থগুলি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করার কোনও উপায় আছে?


105

আমাকে কিছু এক্সেল রিপোর্ট উত্পন্ন করতে বলা হচ্ছে। আমি বর্তমানে আমার ডেটাগুলির জন্য প্যান্ডাসগুলি বেশ ভারীভাবে ব্যবহার করছি, তাই স্বাভাবিকভাবেই আমি এই প্রতিবেদনগুলি তৈরি করতে প্যান্ডাস.এক্সেল রাইটার পদ্ধতিটি ব্যবহার করতে চাই। তবে স্থির কলাম প্রস্থ একটি সমস্যা।

আমার এখন পর্যন্ত কোডটি যথেষ্ট সহজ। বলুন আমার কাছে 'ডিএফ' নামে একটি ডেটাফ্রেম রয়েছে:

writer = pd.ExcelWriter(excel_file_path, engine='openpyxl')
df.to_excel(writer, sheet_name="Summary")

আমি পান্ডাস কোডটি সন্ধান করছিলাম এবং কলামের প্রশস্ততা সেট করার জন্য আমি সত্যিই কোনও বিকল্প দেখতে পাচ্ছি না। মহাবিশ্বে কী এমন কোনও কৌশল তৈরি করা যায় যাতে কলামগুলি ডেটাতে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে? বা কলামের প্রস্থগুলি সামঞ্জস্য করার জন্য xlsx ফাইলটিতে বাস্তবতার পরে আমি কিছু করতে পারি?

(আমি ওপেনপাইএক্সএল লাইব্রেরিটি ব্যবহার করছি এবং .xlsx ফাইলগুলি তৈরি করছি - যদি এতে কোনও পার্থক্য আসে))

ধন্যবাদ.


4
এই মুহুর্তে সম্ভব দেখাচ্ছে না, দয়া করে গিথুব (এবং সম্ভবত কোনও পিআর?) এ এই বর্ধনের জন্য একটি সমস্যা খুলুন। করতে যে কঠিন দেখাচ্ছে না।
জেফ

ধন্যবাদ জেফ, আমি বিষয়টি জমা দিয়েছি। আমি নিশ্চিত না যে সমাধান করার জন্য আমার কাছে
পান্ডাস কোডবেজে

হ্যাঁ .... আপনার সমস্যাটি দেখেছেন ..... আপনার কিছু সাহায্যের প্রয়োজন হলে ইস্যুতে মন্তব্য করুন! (মূলত একটি optionচ্ছিক তর্কটি পাস করার প্রয়োজন to_excel, এতে সম্ভবত col_style=dictশিরোনাম শৈলীর উপাদান রয়েছে (ডিফল্টের চেয়ে header_styleএখন হার্ড কোডিং বলে মনে হচ্ছে
জেফ

উত্তর:


59

ব্যবহারকারী 6178746 এর উত্তরে অনুপ্রাণিত হয়ে আমার কাছে নিম্নলিখিতগুলি রয়েছে:

# Given a dict of dataframes, for example:
# dfs = {'gadgets': df_gadgets, 'widgets': df_widgets}

writer = pd.ExcelWriter(filename, engine='xlsxwriter')
for sheetname, df in dfs.items():  # loop through `dict` of dataframes
    df.to_excel(writer, sheet_name=sheetname)  # send df to writer
    worksheet = writer.sheets[sheetname]  # pull worksheet object
    for idx, col in enumerate(df):  # loop through all columns
        series = df[col]
        max_len = max((
            series.astype(str).map(len).max(),  # len of largest item
            len(str(series.name))  # len of column name/header
            )) + 1  # adding a little extra space
        worksheet.set_column(idx, idx, max_len)  # set column width
writer.save()

8
অবগতির জন্য আমার যদি আমি ব্যবহার করতে "সূচক = মিথ্যা" এ "df.to_excel (...)" Call, বা অন্য কলাম প্রয়োজন 1 বন্ধ ছিল
denvar

4
হাঁ, আমিও df.to_excel যোগ করার জন্য ছিল (লেখক, SHEET_NAME = sheetname সূচক = মিথ্যা)
Heikki Pulkkinen

4
আপনি সূচক ব্যবহার না পারেন, তাহলে = মিথ্যা (কারণ আপনি সারি উপর একটি multiindex আছে), তাহলে আপনি df.index.nlevels সঙ্গে সূচক স্তর গভীরতা পেতে পারেন এবং তারপর এটি ব্যবহার আপনার সেট কলামের কলে যোগ করুন: worksheet.set_column(idx+nlevels, idx+nlevels, max_len)। অন্যথায় দৈর্ঘ্যটি ফ্রেমের প্রথম কলামের জন্য গণনা করা হয় এবং তারপরে এক্সেলের প্রথম কলামে প্রয়োগ করা হয় যা সম্ভবত সূচক।
ac24

4
যে কেউ এখনও এই উত্তর খুঁজছেন তাদের জন্য enumerate(df)হওয়া উচিত , enumerate(df.columns)যেহেতু আপনি প্রতিটি কলামটিতে পুনরাবৃত্তি করছেন df
ডেসিয়েনজ

4
কাস্টমগুলি (যেমন আপনাকে ম্যানুয়ালি বলতে হবে না ) গুলিতে কলামগুলির উপরে পুনরাবৃত্তি করে @ ড্যাসিয়েঞ্জ একইভাবে কীগুলিতে dictআসলে পুনরাবৃত্তি করে । আপনাকে ম্যানুয়ালি পুনরাবৃত্তি করতে হবে না । dictdict.keys()pd.DataFramedf.columns
অ্যালিশাউড্রি

28

আমি এটি পোস্ট করছি কারণ আমি কেবল একই সমস্যার মধ্যে এসেছি এবং দেখতে পেয়েছি Xlsxwriter এবং পান্ডাদের সরকারী নথিপত্রগুলিতে এই কার্যকারিতাটি অসমর্থিত হিসাবে তালিকাভুক্ত রয়েছে। আমি একসাথে একটি সমাধান হ্যাক করেছি যা আমার যে সমস্যাটি নিয়েছিল তা সমাধান করেছে। আমি মূলত প্রতিটি কলামের মধ্য দিয়ে পুনরাবৃত্তি করি এবং কলামের প্রস্থ == that কলামের সামগ্রীর সর্বোচ্চ দৈর্ঘ্য সেট করতে ওয়ার্কশিট.সেট_সকলম ব্যবহার করি।

তবে একটি গুরুত্বপূর্ণ নোট। এই সমাধানটি কলামের শিরোনামগুলির সাথে খাপ খায় না, কেবল কলামের মান। এটি যদি আপনার পরিবর্তে শিরোনাম ফিট করতে হয় তবে এটি একটি সহজ পরিবর্তন হওয়া উচিত। আশা করি এটি কাউকে সাহায্য করবে :)

import pandas as pd
import sqlalchemy as sa
import urllib


read_server = 'serverName'
read_database = 'databaseName'

read_params = urllib.quote_plus("DRIVER={SQL Server};SERVER="+read_server+";DATABASE="+read_database+";TRUSTED_CONNECTION=Yes")
read_engine = sa.create_engine("mssql+pyodbc:///?odbc_connect=%s" % read_params)

#Output some SQL Server data into a dataframe
my_sql_query = """ SELECT * FROM dbo.my_table """
my_dataframe = pd.read_sql_query(my_sql_query,con=read_engine)

#Set destination directory to save excel.
xlsFilepath = r'H:\my_project' + "\\" + 'my_file_name.xlsx'
writer = pd.ExcelWriter(xlsFilepath, engine='xlsxwriter')

#Write excel to file using pandas to_excel
my_dataframe.to_excel(writer, startrow = 1, sheet_name='Sheet1', index=False)

#Indicate workbook and worksheet for formatting
workbook = writer.book
worksheet = writer.sheets['Sheet1']

#Iterate through each column and set the width == the max length in that column. A padding length of 2 is also added.
for i, col in enumerate(my_dataframe.columns):
    # find length of column i
    column_len = my_dataframe[col].astype(str).str.len().max()
    # Setting the length if the column header is larger
    # than the max column value length
    column_len = max(column_len, len(col)) + 2
    # set the column length
    worksheet.set_column(i, i, column_len)
writer.save()

4
ভাল সমাধান। আমি পছন্দ করি আপনি কীভাবে অন্য প্যাকেজের পরিবর্তে পান্ডা ব্যবহার করেছেন।

আমার মনে হয় আপনার ()সর্বাধিক ফাংশনের অভ্যন্তরে দরকার : `সর্বোচ্চ (কলাম_লেন (), লেন (কল)) + 2
Ser

21

বোধহয় এখনই করার কোন স্বয়ংক্রিয় ভাবে, কিন্তু হিসাবে আপনি openpyxl ব্যবহার করেন, (ব্যবহারকারী দ্বারা অন্য উত্তর থেকে অভিযোজিত লাইন নিম্নলিখিত Bufke উপর কিভাবে ম্যানুয়ালি কি করতে ) আপনি একটি বিবেকী মান (চরিত্র প্রস্থ মধ্যে) নির্দিষ্ট করার অনুমতি দেবে:

writer.sheets['Summary'].column_dimensions['A'].width = 15

ডিফল্ট এক্সেলরাইটার ইঞ্জিন প্যান্ডাস ব্যবহার করছে 2013 সাল থেকে Xlsxwriter তে পরিবর্তিত হয়েছে, এতে কোনও column_dimensionsবৈশিষ্ট্য নেই। যদি আপনি ওপেনপেক্সএল ব্যবহার চালিয়ে যেতে চান তবে লেখক তৈরি করার সময় এটি নির্দিষ্ট করুনpd.ExcelWriter(excel_filename, engine='openpyxl')
ojdo

@ সুনীল: Xlsxwriterআজকের ডিফল্ট ইঞ্জিনের সাহায্যে কলামের প্রস্থ কীভাবে নির্দিষ্ট করা যায় তা দেখতে ইঞ্জিন হিসাবে ব্যবহার করে অন্যান্য উত্তরগুলি পরীক্ষা করুন ।
ojdo

21

একটি দুর্দান্ত প্যাকেজ রয়েছে যা আমি সম্প্রতি স্টাইলফ্রেম নামে ব্যবহার করতে শুরু করেছি।

এটি ডেটাফ্রেম পায় এবং আপনাকে খুব সহজেই এটি স্টাইল করতে দেয় ...

ডিফল্টরূপে কলামগুলির প্রস্থটি স্বয়ংক্রিয়ভাবে সমন্বয় করা হয়।

উদাহরণ স্বরূপ:

from StyleFrame import StyleFrame
import pandas as pd

df = pd.DataFrame({'aaaaaaaaaaa': [1, 2, 3], 
                   'bbbbbbbbb': [1, 1, 1],
                   'ccccccccccc': [2, 3, 4]})
excel_writer = StyleFrame.ExcelWriter('example.xlsx')
sf = StyleFrame(df)
sf.to_excel(excel_writer=excel_writer, row_to_add_filters=0,
            columns_and_rows_to_freeze='B2')
excel_writer.save()

আপনি কলামগুলির প্রস্থও পরিবর্তন করতে পারবেন:

sf.set_column_width(columns=['aaaaaaaaaaa', 'bbbbbbbbb'],
                    width=35.3)

আপডেট 1

সংস্করণে 1.4 best_fitযুক্তি যুক্ত করা হয়েছিল StyleFrame.to_excelডকুমেন্টেশন দেখুন ।

আপডেট 2

এখানে কোডের একটি নমুনা যা স্টাইলফ্রেম 3.xx এর জন্য কাজ করে

from styleframe import StyleFrame
import pandas as pd

columns = ['aaaaaaaaaaa', 'bbbbbbbbb', 'ccccccccccc', ]
df = pd.DataFrame(data={
        'aaaaaaaaaaa': [1, 2, 3, ],
        'bbbbbbbbb': [1, 1, 1, ],
        'ccccccccccc': [2, 3, 4, ],
    }, columns=columns,
)
excel_writer = StyleFrame.ExcelWriter('example.xlsx')
sf = StyleFrame(df)
sf.to_excel(
    excel_writer=excel_writer, 
    best_fit=columns,
    columns_and_rows_to_freeze='B2', 
    row_to_add_filters=0,
)
excel_writer.save()

স্টাইলফ্রেম প্যাকেজটি ব্যবহার করা সহজ হতে পারে তবে আমি কীভাবে "ডিফল্টরূপে কলামগুলির প্রস্থটি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে দেখছি" তা দেখছি না। আপনার দেওয়া কোড নমুনাটি যখন আমি চালিত করি তখন সমস্ত কলাম একই প্রস্থের এবং তিনটি শিরোনাম মোড়ানো থাকে। আপনার নমুনা ডেটাও খুব খারাপভাবে বেছে নেওয়া হয়েছে, কারণ এগুলি প্রাকৃতিকভাবে প্রায় একই প্রস্থের। প্রকৃতপক্ষে স্বয়ংক্রিয়ভাবে সমন্বয় চিত্রিত করতে আপনার কিছু সত্যিকারের প্রশস্ত ডেটা এবং কিছু সংকীর্ণ ডেটা বেছে নেওয়া উচিত। আমি যখন নিজের জন্য এটি করি, কলামের প্রস্থগুলি এখনও আগের মতো ঠিক আছে। যাইহোক কোনও সমন্বয় ছিল না।
জন ওয়াই

স্টাইলফ্রেমের ইতিহাসের এক পর্যায়ে, কলামের প্রস্থগুলি স্বয়ংক্রিয়ভাবে ডিফল্ট দ্বারা সামঞ্জস্য করা হয়েছিল, তবে কমপক্ষে আজ আপনাকে best_fitপ্যারামিটারে সামঞ্জস্য করতে চান কলাম বা কলামগুলি নির্দিষ্ট করতে হবে । এছাড়াও, আমি যখন এটি চেষ্টা করেছি তখন আমি খুব খারাপ ফলাফল পেয়েছি ।
জন ওয়াই

প্রস্থটি 1 কলামের বাইরে বলে মনে হচ্ছে। আমি indexপ্যারামিটারটি সক্ষম এবং অক্ষম করার চেষ্টা করেছি তবে কোনও ডাইস নেই।

4
ধন্যবাদ! যারা খুঁজছেন তাদের জন্য: আপনি শিরোনামে আরও স্টাইলিং কীভাবে যুক্ত করেন: sf.apply_headers_style(Styler(bold=False))এটি বের করতে আমার অনেক সময় লেগেছে। এবং আমদানির বিবৃতিতে from StyleFrame import StyleFrame, Styler,। সাহসী ব্যতীত এখানে সমস্ত বিকল্প রয়েছে: স্টাইলফ্রেম.ড্রেডহেডসকস.আইও
নিখিল ভিজে

4
@ হ্যাগবার্ড 3 সংস্করণ হিসাবে আমদানি from styleframe import StyleFrameপিইপি 8 নাম কনভেনশন মেনে চলতে হবে
ডিপস্পেস

11

পান্ডাস এবং xlsxwriter ব্যবহার করে আপনি আপনার কাজটি করতে পারেন, নীচের কোডটি পাইথন ৩.x এ পুরোপুরি কাজ করবে। পান্ডসের সাথে এক্সএলএসএক্সগ্রাইটারের সাথে কাজ করার বিষয়ে আরও তথ্যের জন্য এই লিঙ্কটি https://xlsxwriter.readthedocs.io/working_with_pandas.html কার্যকর হতে পারে

import pandas as pd
writer = pd.ExcelWriter(excel_file_path, engine='xlsxwriter')
df.to_excel(writer, sheet_name="Summary")
workbook = writer.book
worksheet = writer.sheets["Summary"]
#set the column width as per your requirement
worksheet.set_column('A:A', 25)
writer.save()

5

সমস্ত কলাম দৈর্ঘ্য গতিশীলভাবে সামঞ্জস্য করুন

writer = pd.ExcelWriter('/path/to/output/file.xlsx') 
df.to_excel(writer, sheet_name='sheetName', index=False, na_rep='NaN')

for column in df:
    column_length = max(df[column].astype(str).map(len).max(), len(column))
    col_idx = df.columns.get_loc(column)
    writer.sheets['sheetName'].set_column(col_idx, col_idx, column_length)

কলামের নাম ব্যবহার করে ম্যানুয়ালি একটি কলাম সামঞ্জস্য করুন

col_idx = df.columns.get_loc('columnName')
writer.sheets['sheetName'].set_column(col_idx, col_idx, 15)

কলাম সূচকটি ব্যবহার করে ম্যানুয়ালি একটি কলাম সমন্বয় করুন

writer.sheets['sheetName'].set_column(col_idx, col_idx, 15)

যদি উপরের কোনওটি ব্যর্থ হয়

AttributeError: 'Worksheet' object has no attribute 'set_column'

ইনস্টল করতে ভুলবেন না xlsxwriter:

pip install xlsxwriter

4

আমি দেখতে পেয়েছি যে কলামের শিরোনামের পরিবর্তে কলাম শিরোনামের ভিত্তিতে কলামটি সামঞ্জস্য করা আরও কার্যকর।

df.columns.values.tolist()আমি কলামের শিরোনামগুলির একটি তালিকা উত্পন্ন করি এবং কলামগুলির প্রস্থ নির্ধারণ করতে এই শিরোনামগুলির দৈর্ঘ্য ব্যবহার করি Using

নীচে সম্পূর্ণ কোড দেখুন:

import pandas as pd
import xlsxwriter

writer = pd.ExcelWriter(filename, engine='xlsxwriter')
df.to_excel(writer, index=False, sheet_name=sheetname)

workbook = writer.book # Access the workbook
worksheet= writer.sheets[sheetname] # Access the Worksheet

header_list = df.columns.values.tolist() # Generate list of headers
for i in range(0, len(header_list)):
    worksheet.set_column(i, i, len(header_list[i])) # Set column widths based on len(header)

writer.save() # Save the excel file

4

কর্মক্ষেত্রে, আমি সবসময় ফাইল এক্সেল করার জন্য ডেটাফ্রেমগুলি লিখছি। তাই বার বার একই কোড লেখার পরিবর্তে আমি একটি মডুলাস তৈরি করেছি। এখন আমি কেবল এটি আমদানি করেছি এবং এটি এক্সেল ফাইলগুলি লিখতে এবং গঠন করতে ব্যবহার করি। যদিও এর একটি নেতিবাচক দিক রয়েছে, ডেটাফ্রেম অতিরিক্ত বড় হলে এটি একটি দীর্ঘ সময় নেয়। সুতরাং এখানে কোড:

def result_to_excel(output_name, dataframes_list, sheet_names_list, output_dir):
    out_path = os.path.join(output_dir, output_name)
    writerReport = pd.ExcelWriter(out_path, engine='xlsxwriter',
                    datetime_format='yyyymmdd', date_format='yyyymmdd')
    workbook = writerReport.book
    # loop through the list of dataframes to save every dataframe into a new sheet in the excel file
    for i, dataframe in enumerate(dataframes_list):
        sheet_name = sheet_names_list[i]  # choose the sheet name from sheet_names_list
        dataframe.to_excel(writerReport, sheet_name=sheet_name, index=False, startrow=0)
        # Add a header format.
        format = workbook.add_format({
            'bold': True,
            'border': 1,
            'fg_color': '#0000FF',
            'font_color': 'white'})
        # Write the column headers with the defined format.
        worksheet = writerReport.sheets[sheet_name]
        for col_num, col_name in enumerate(dataframe.columns.values):
            worksheet.write(0, col_num, col_name, format)
        worksheet.autofilter(0, 0, 0, len(dataframe.columns) - 1)
        worksheet.freeze_panes(1, 0)
        # loop through the columns in the dataframe to get the width of the column
        for j, col in enumerate(dataframe.columns):
            max_width = max([len(str(s)) for s in dataframe[col].values] + [len(col) + 2])
            # define a max width to not get to wide column
            if max_width > 50:
                max_width = 50
            worksheet.set_column(j, j, max_width)
    writerReport.save()
    return output_dir + output_name


আমি এই কোডটি প্রতিলিপি করার সময় নিম্নলিখিত ত্রুটি পেয়েছি: অ্যাট্রিবিউটআরার: 'str' অবজেক্টটির 'to_excel' এর কোনও বৈশিষ্ট্য নেই। এটি "ডেটাফ্রেম_লিস্ট" তৈরির উপায়ের সাথে কিছু করার আছে বলে মনে করে। খনি 6 ডেটা ফ্রেমের নাম সহ একটি তালিকা
ব্যবহারকারী 3019973

হ্যাঁ, "ডেটাফ্রেম_লিস্ট" এর ডেটাফ্রেম থাকতে হবে এবং ডেটাফ্রেমের নাম নয়।
rafat.ch

2

অন্যান্য উত্তর এবং মন্তব্যের সংমিশ্রণ এবং বহু-সূচকগুলি সমর্থন করে:

def autosize_excel_columns(worksheet, df):
  autosize_excel_columns_df(worksheet, df.index.to_frame())
  autosize_excel_columns_df(worksheet, df, offset=df.index.nlevels)

def autosize_excel_columns_df(worksheet, df, offset=0):
  for idx, col in enumerate(df):
    series = df[col]
    max_len = max((
      series.astype(str).map(len).max(),
      len(str(series.name))
    )) + 1
    worksheet.set_column(idx+offset, idx+offset, max_len)

sheetname=...
df.to_excel(writer, sheet_name=sheetname, freeze_panes=(df.columns.nlevels, df.index.nlevels))
worksheet = writer.sheets[sheetname]
autosize_excel_columns(worksheet, df)
writer.save()

2
import re
import openpyxl
..
for col in _ws.columns:
    max_lenght = 0
    print(col[0])
    col_name = re.findall('\w\d', str(col[0]))
    col_name = col_name[0]
    col_name = re.findall('\w', str(col_name))[0]
    print(col_name)
    for cell in col:
        try:
            if len(str(cell.value)) > max_lenght:
                max_lenght = len(cell.value)
        except:
            pass
    adjusted_width = (max_lenght+2)
    _ws.column_dimensions[col_name].width = adjusted_width

1

সবচেয়ে সহজ সমাধান হ'ল সেট_ কলাম পদ্ধতিতে কলামের প্রস্থ উল্লেখ করা।

    for worksheet in writer.sheets.values():
        worksheet.set_column(0,last_column_value, required_width_constant)

1
def auto_width_columns(df, sheetname):
    workbook = writer.book  
    worksheet= writer.sheets[sheetname] 

    for i, col in enumerate(df.columns):
        column_len = max(df[col].astype(str).str.len().max(), len(col) + 2)
        worksheet.set_column(i, i, column_len)

4
কোডগুলি কেবল আপনাকে কিছু ব্যাখ্যা যুক্ত করতে বা সময় নিয়ে ডকুমেন্টেশন পড়তে হবে এমন প্রশ্নের উত্তর দেয় না আমি কীভাবে একটি ভাল উত্তর লিখব?
গাদ

4
হ্যালো! এই কোডটি কীভাবে এবং কেন সমস্যার সমাধান করে তার ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে যদিও আপনার পোস্টের মান উন্নত করতে সত্যই সহায়তা করবে এবং সম্ভবত আরও বেশি ভোটের ফলাফল হবে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, কেবল এখন যে ব্যক্তি জিজ্ঞাসা করছেন তা নয়। দয়া করে সম্পাদনা ব্যাখ্যা যোগ করতে পারেন এবং সীমাবদ্ধতা এবং অনুমানের কি প্রয়োগ একটি ইঙ্গিত দিতে আপনার উত্তর।
ব্রায়ান

0

হ্যাঁ, কলামের প্রস্থগুলি সামঞ্জস্য করার জন্য xlsx ফাইলটিতে বাস্তবতার পরে আপনি কিছু করতে পারেন। কলামগুলি স্বতঃফিট করতে xlwings ব্যবহার করুন । এটি একটি দুর্দান্ত সহজ সমাধান, উদাহরণ কোডটির ছয়টি শেষ লাইন দেখুন। এই পদ্ধতির সুবিধা হ'ল আপনাকে ফন্টের আকার, ফন্টের ধরণ বা অন্য কোনও বিষয় নিয়ে চিন্তা করতে হবে না। প্রয়োজনীয়তা: এক্সেল ইনস্টলেশন।

import pandas as pd
import xlwings as xw

report_file = "test.xlsx"

df1 = pd.DataFrame([
    ('this is a long term1', 1, 1, 3),
    ('this is a long term2', 1, 2, 5),
    ('this is a long term3', 1, 1, 6),
    ('this is a long term2', 1, 1, 9),
    ], columns=['term', 'aaaa', 'bbbbbbb', "cccccccccccccccccccccccccccccccccccccccccccccc"])

writer = pd.ExcelWriter(report_file, engine="xlsxwriter")
df1.to_excel(writer, sheet_name="Sheet1", index=False)

workbook = writer.book
worksheet1 = writer.sheets["Sheet1"]
num_format = workbook.add_format({"num_format": '#,##0.00'})

worksheet1.set_column("B:D", cell_format=num_format)
writer.save()

# Autofit all columns with xlwings.
app = xw.App(visible=False)
wb = xw.Book(report_file)

for ws in wb.sheets:
    ws.autofit(axis="columns")

wb.save(report_file)
app.quit()

শুধুমাত্র উইন্ডোজ এবং ম্যাকোজে কাজ করে, লিনাক্সে নয়
গিডো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.