鱼C论坛

 找回密码
 立即注册
查看: 1296|回复: 33

[已解决]哪种执行效率更高一点?

[复制链接]
发表于 2024-5-25 10:58:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我有一个关于考勤汇总的一个dataframe,pandas库的,,我称之为总表,现在是要把它根据不同的条件再次拆分成“所有办公地点的人员需要扣款的”、“所有办公地点的人员无需扣款的”、“总部办公室人员的”,。。。。最终形成一个excel文件,里面就包含了这个“总表”,还有再次拆分出来的另外三个表格,总共四个sheet.,,然后再进一步给生成的各个sheet做一个美化添加边框改字体什么的操作..我该用怎么样的流程去实现~效率会更高一点?

我目前有两个想法,
第一个就是这个总表,先保存成一个excel文件,然后用openpyxl库,对这个总表表格文件做一个遍历,然后把遍历到的每一行根据它的实际条件,添加到不同的sheet里面,然后做美化。
第二个就是这个总表的DF,先分成另外三个DF出来,得到四个DF,再生成四个excel文件,然后再用openpyxl去遍历美化,最后用openpyxl把那三个表合并到总表的文件里,形成另外三个sheet,,再把那三个excel表格删除掉。

就这两种想法,,哪种的执行效率会比较高一点,,
或者说,从得到这个总表的df阶段开始,有别的实现方法效率更快的?麻烦告知
最佳答案
2024-5-25 10:58:43
从效率的角度来看,第二种想法可能会更高一点。

在第一种想法中,你需要对总表的每一行进行遍历,并根据条件添加到不同的sheet中,这样的操作对于大型数据集可能会比较耗时。同时,由于你需要对每个sheet进行美化操作,可能需要多次遍历和修改,也会增加一定的时间消耗。

而在第二种想法中,你可以先将总表的DF分解成四个DF,生成四个单独的excel文件。然后使用openpyxl遍历和美化这四个文件的各个sheet。最后,你可以使用openpyxl将其他三个文件的sheet合并到总表的文件中,形成另外三个sheet,再删除其他三个excel表格。相比较第一种方法,在第二种方法中,你可以对四个DF和四个excel文件进行并行处理,节省了一些时间。

除此之外,如果你对时间效率要求比较高,还可以考虑使用pandas库的ExcelWriter来直接操作excel文件,从而避免生成中间文件的过程。这样可以减少IO操作,提高效率。

总之,第二种想法可能会更高效一些,但具体的效率还取决于数据量的大小以及美化操作的复杂程度。你可以尝试实现两种方法,并进行测试评估,选择最适合你需求的方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-5-25 10:58:43 | 显示全部楼层    本楼为最佳答案   
从效率的角度来看,第二种想法可能会更高一点。

在第一种想法中,你需要对总表的每一行进行遍历,并根据条件添加到不同的sheet中,这样的操作对于大型数据集可能会比较耗时。同时,由于你需要对每个sheet进行美化操作,可能需要多次遍历和修改,也会增加一定的时间消耗。

而在第二种想法中,你可以先将总表的DF分解成四个DF,生成四个单独的excel文件。然后使用openpyxl遍历和美化这四个文件的各个sheet。最后,你可以使用openpyxl将其他三个文件的sheet合并到总表的文件中,形成另外三个sheet,再删除其他三个excel表格。相比较第一种方法,在第二种方法中,你可以对四个DF和四个excel文件进行并行处理,节省了一些时间。

除此之外,如果你对时间效率要求比较高,还可以考虑使用pandas库的ExcelWriter来直接操作excel文件,从而避免生成中间文件的过程。这样可以减少IO操作,提高效率。

总之,第二种想法可能会更高效一些,但具体的效率还取决于数据量的大小以及美化操作的复杂程度。你可以尝试实现两种方法,并进行测试评估,选择最适合你需求的方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-25 11:04:44 | 显示全部楼层
FishC 发表于 2024-5-25 10:58
从效率的角度来看,第二种想法可能会更高一点。

在第一种想法中,你需要对总表的每一行进行遍历,并根据 ...

明白。谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-25 11:04:53 | 显示全部楼层


不客气,希望能帮到你。如果还有其他问题,随时来问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-25 11:06:29 | 显示全部楼层
FishC 发表于 2024-5-25 11:04
不客气,希望能帮到你。如果还有其他问题,随时来问我哦!

以上回复来自 FishC AI 小助理,如未能正 ...

pandas库的ExcelWriter有没有办法在一个excel文件里生成4个sheet的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-25 11:06:39 | 显示全部楼层
laiyuanjie 发表于 2024-05-25 11:06
pandas库的ExcelWriter有没有办法在一个excel文件里生 ...


是的,pandas库的ExcelWriter可以在一个excel文件中生成多个sheet。你可以按照以下步骤来实现:

1. 创建一个ExcelWriter对象,指定要保存的文件路径和文件名:
  1. import pandas as pd

  2. writer = pd.ExcelWriter('output.xlsx')
复制代码


2. 将不同的DataFrame写入ExcelWriter对象的不同sheet中:
  1. df_sheet1.to_excel(writer, sheet_name='Sheet1')
  2. df_sheet2.to_excel(writer, sheet_name='Sheet2')
  3. df_sheet3.to_excel(writer, sheet_name='Sheet3')
  4. ...
复制代码


在上面的代码中,`df_sheet1`、`df_sheet2`等分别代表要写入的不同DataFrame,`sheet_name`参数用于指定要写入的sheet的名称。

3. 最后,调用ExcelWriter对象的save方法保存文件:
  1. writer.save()
复制代码


这样就可以将不同的DataFrame写入同一个excel文件的不同sheet中了。请根据你的具体需求修改代码,并适当添加美化操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-25 11:07:08 | 显示全部楼层
FishC 发表于 2024-5-25 11:06
是的,pandas库的ExcelWriter可以在一个excel文件中生成多个sheet。你可以按照以下步骤来实现:

1.  ...

欧了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-25 11:07:13 | 显示全部楼层


很高兴能帮到你!如果还有其他问题,随时来问我哦!祝你编程顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-26 20:22:50 | 显示全部楼层
FishC 发表于 2024-5-25 11:06
是的,pandas库的ExcelWriter可以在一个excel文件中生成多个sheet。你可以按照以下步骤来实现:

1.  ...

如果我想把几个DF写进原先有内容的EXCEL表格里面呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-26 20:23:06 | 显示全部楼层
laiyuanjie 发表于 2024-05-26 20:22
如果我想把几个DF写进原先有内容的EXCEL表格里面呢?


如果你想将几个DataFrame写入到已有内容的Excel表格中,可以使用`openpyxl`库来进行操作。下面是一个示例代码:

  1. import pandas as pd
  2. from openpyxl import load_workbook

  3. # 读取已有的Excel表格
  4. book = load_workbook('原始表格.xlsx')

  5. # 创建一个ExcelWriter对象,并指定要写入的Excel文件
  6. writer = pd.ExcelWriter('原始表格.xlsx', engine='openpyxl')
  7. writer.book = book

  8. # 将DataFrame写入到指定的sheet中,注意指定开始写入的单元格位置
  9. df1.to_excel(writer, sheet_name='Sheet1', startrow=<start_row>, startcol=<start_column>, index=False)
  10. df2.to_excel(writer, sheet_name='Sheet2', startrow=<start_row>, startcol=<start_column>, index=False)
  11. df3.to_excel(writer, sheet_name='Sheet3', startrow=<start_row>, startcol=<start_column>, index=False)

  12. # 保存并关闭ExcelWriter对象
  13. writer.save()
  14. writer.close()
复制代码


在上述代码中:
- `load_workbook`函数用于加载已有的Excel表格。
- 创建`ExcelWriter`对象时,通过`engine='openpyxl'`来指定使用`openpyxl`引擎。
- `writer.book`属性用于将已有的Excel表格关联到`ExcelWriter`对象中。
- 在调用`to_excel`方法时,通过`startrow`和`startcol`参数来指定从哪个单元格开始写入DataFrame的数据,这样可以保留已有数据,并将新的数据添加到相应位置。

请根据你的实际需求修改代码中的路径、sheet名称以及起始行列数等参数,以及添加其他的DataFrame写入操作。
如果有任何问题,请随时向我咨询!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 14:21:31 | 显示全部楼层
FishC 发表于 2024-5-26 20:23
如果你想将几个DataFrame写入到已有内容的Excel表格中,可以使用`openpyxl`库来进行操作。下面是一个示 ...

如果我要把DF用openpyxl库来写入EXCEL的同时,给这个DF做一些美化,比如添加边框,改变列宽什么等一系列的操作,那么是把DF写入保存在EXCEL表格里面之后保存退出,再重新用openpyxl打开,去添加各种我要的属性,,,还是在一开始写入DF之后就马上可以进行操作~而不必中间保存退出再打开?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-28 14:21:51 | 显示全部楼层
laiyuanjie 发表于 2024-05-28 14:21
如果我要把DF用openpyxl库来写入EXCEL的同时,给这个D ...


如果你想在使用openpyxl库将DataFrame写入Excel的同时进行美化操作,可以直接在写入DataFrame之后进行操作,而不必保存退出再打开。下面是一个示例代码:

  1. import pandas as pd
  2. from openpyxl import Workbook, load_workbook
  3. from openpyxl.styles import Border, Side

  4. # 创建一个空白的Excel表格
  5. wb = Workbook()
  6. ws = wb.active

  7. # 将DataFrame写入Excel表格
  8. df.to_excel('output.xlsx', index=False, engine='openpyxl', sheet_name='Sheet1')

  9. # 加载已有的Excel表格
  10. wb = load_workbook('output.xlsx')

  11. # 获取指定的sheet
  12. ws = wb['Sheet1']

  13. # 设置边框
  14. border = Border(left=Side(border_style='thin'),
  15.                 right=Side(border_style='thin'),
  16.                 top=Side(border_style='thin'),
  17.                 bottom=Side(border_style='thin'))
  18. for row in ws.iter_rows():
  19.     for cell in row:
  20.         cell.border = border

  21. # 设置列宽
  22. ws.column_dimensions['A'].width = 15
  23. ws.column_dimensions['B'].width = 12
  24. ws.column_dimensions['C'].width = 20

  25. # 保存修改后的Excel表格
  26. wb.save('output.xlsx')
复制代码


在上述代码中,首先使用`pandas`将DataFrame写入Excel表格,然后通过`load_workbook`加载已有的Excel文件,并获取到相应的sheet。接着,你可以使用`openpyxl`提供的函数和属性对Excel表格进行美化操作,比如设置边框和列宽。最后,使用`save`方法保存修改后的Excel表格。

请根据你的实际需求修改代码中的路径、sheet名称和具体的美化操作。如果有任何问题,请随时向我咨询!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 15:49:51 | 显示全部楼层
FishC 发表于 2024-5-28 14:21
如果你想在使用openpyxl库将DataFrame写入Excel的同时进行美化操作,可以直接在写入DataFrame之后进行 ...

如果我的美化,每一列的边框,字体大小,对齐方式等等,都各不相同,那么代码比较好一点的写法是怎么样的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 15:50:31 | 显示全部楼层
laiyuanjie 发表于 2024-05-29 15:49
如果我的美化,每一列的边框,字体大小,对齐方式等等 ...


如果每一列的边框、字体大小、对齐方式等都各不相同,可以使用一个字典来存储每一列的美化属性,然后在遍历每一列时,根据字典中对应的属性设置进行操作。下面是一个示例代码:

  1. import pandas as pd
  2. from openpyxl import Workbook, load_workbook
  3. from openpyxl.styles import Border, Font, Alignment

  4. # 创建一个空白的Excel表格
  5. wb = Workbook()
  6. ws = wb.active

  7. # 将DataFrame写入Excel表格
  8. df.to_excel('output.xlsx', index=False, engine='openpyxl', sheet_name='Sheet1')

  9. # 加载已有的Excel表格
  10. wb = load_workbook('output.xlsx')

  11. # 获取指定的sheet
  12. ws = wb['Sheet1']

  13. # 定义每一列的美化属性(示例)
  14. column_styles = {
  15.     'A': {
  16.         'border': Border(left=Side(border_style='thin')),
  17.         'font': Font(size=12),
  18.         'alignment': Alignment(horizontal='left', vertical='center')
  19.     },
  20.     'B': {
  21.         'border': Border(right=Side(border_style='thick')),
  22.         'font': Font(size=14, bold=True),
  23.         'alignment': Alignment(horizontal='center', vertical='center')
  24.     },
  25.     'C': {
  26.         'border': Border(top=Side(border_style='medium')),
  27.         'font': Font(size=16, italic=True),
  28.         'alignment': Alignment(horizontal='right', vertical='center')
  29.     }
  30. }

  31. # 遍历每一列,并根据属性设置进行美化操作
  32. for column in ws.columns:
  33.     column_letter = column[0].column_letter
  34.     if column_letter in column_styles:
  35.         style = column_styles[column_letter]
  36.         for cell in column:
  37.             cell.border = style['border']
  38.             cell.font = style['font']
  39.             cell.alignment = style['alignment']

  40. # 保存修改后的Excel表格
  41. wb.save('output.xlsx')
复制代码


在上述示例代码中,我们定义了一个`column_styles`字典来存储每一列的美化属性。键是列的字母标识,值是一个包含边框、字体和对齐方式的字典。在遍历每一列时,我们根据字典中对应的属性设置对单元格进行美化操作。

请根据你的实际需求修改代码中的路径、sheet名称和具体的美化属性。你可以按照这种方式为每一列设置不同的美化效果。如果有任何问题,请随时向我咨询!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 17:03:39 | 显示全部楼层
FishC 发表于 2024-5-29 15:50
如果每一列的边框、字体大小、对齐方式等都各不相同,可以使用一个字典来存储每一列的美化属性,然后在 ...

class WriterExcel:
    def __init__(self):
        pass

    def fun_save_sheet(self,sheet,sheet_name,path):
        self.sheet = sheet
        self.sheet_name = sheet_name
        self.path = path
        self.excel = vb.load_workbook(self.path)

        self.fun_writer_excel()

    def fun_writer_excel(self):
        self.writer = pd.ExcelWriter(self.path,engine="openpyxl")
        self.writer.book = self.excel

        self.sheet.to_excel(self.writer,sheet_name=self.sheet_name,startrow=0,startcol=0,index=True)

        #从这里接入美化的模块

        self.writer.save()
        self.writer.close()


如果我是在已有的EXCEL表格里,将一个pandas的DF写入成为一个新的sheet,,,在注释的那个地方接入美化的代码,,有没有问题?
是不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 17:04:01 | 显示全部楼层
laiyuanjie 发表于 2024-05-29 17:03
class WriterExcel:
    def __init__(self):
      ...


你的代码基本上是正确的,只是在接入美化的代码时需要做一些修改。以下是修改后的代码示例:

  1. class WriterExcel:
  2.     def __init__(self):
  3.         pass

  4.     def fun_save_sheet(self, sheet, sheet_name, path):
  5.         self.sheet = sheet
  6.         self.sheet_name = sheet_name
  7.         self.path = path
  8.         self.excel = load_workbook(self.path)

  9.         self.fun_writer_excel()

  10.     def fun_writer_excel(self):
  11.         self.writer = pd.ExcelWriter(self.path, engine="openpyxl")
  12.         self.writer.book = self.excel

  13.         # 将DataFrame写入到指定的sheet中,注意指定开始写入的单元格位置
  14.         self.sheet.to_excel(self.writer, sheet_name=self.sheet_name, startrow=0, startcol=0, index=True)

  15.         # 美化操作(示例)
  16.         ws = self.excel[self.sheet_name]
  17.         # 设置边框
  18.         border = Border(left=Side(border_style='thin'),
  19.                         right=Side(border_style='thin'),
  20.                         top=Side(border_style='thin'),
  21.                         bottom=Side(border_style='thin'))
  22.         for row in ws.iter_rows():
  23.             for cell in row:
  24.                 cell.border = border

  25.         # 设置列宽
  26.         ws.column_dimensions.column_dimensions['A'].width = 15
  27.         ws.column_dimensions['B'].width = 12
  28.         ws.column_dimensions['C'].width = 20

  29.         self.writer.save()
  30.         self.writer.close()
复制代码


在上述代码中,我们使用`load_workbook`函数加载已有的Excel文件,然后通过`self.excel[self.sheet_name]`来获取指定的sheet。在美化操作部分,我们设置了边框和列宽的示例。你可以根据自己的需求对代码进行修改,并添加其他的美化操作。

希望这可以解决你的问题。如有其他疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-31 09:56:35 | 显示全部楼层
FishC 发表于 2024-5-29 17:04
你的代码基本上是正确的,只是在接入美化的代码时需要做一些修改。以下是修改后的代码示例:

class BeautifySheet:
    def __init__(self):

        pass

    def fun_set_excel(self,excel):
        self.excel = excel


    def fun_beautify(self,sheet_name,dict):
        self.sheet = self.excel[sheet_name]
        self.column_styles = dict

        for self.column in self.sheet.columns:

            self.column_letter = self.column[0].column_letter
            print(self.column_letter)#即ABCD.....

            if self.column_letter in self.column_styles:
                self.style = self.column_styles[self.column_letter]

                self.sheet.column_dimensions[self.column_letter].width = self.style["width"]#设置列宽

                for self.cell in self.column:
                    self.cell.border = self.style["border"]#边框
                    self.cell.font = self.style["font"]#字体
                    self.alignment = self.style["alignment"]#居中方式

from openpyxl.styles import Border, Font, Alignment
from openpyxl import Workbook, load_workbook
from Border import border
total_sheet_styles = {
    'A': {
        'border': border.l_thick_d_thin,
        'font': Font(size=12, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'B': {
        'border': border.l_thin_d_thin,
        'font': Font(size=15, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 12

    },
    'C': {
        'border': border.l_drop_d_thin,
        'font': Font(size=12, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 12
    },
    'D': {
        'border': border.l_thick_d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'E': {
        'border': border.d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 6
    },
    'F': {
        'border': border.l_drop_d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'G': {
        'border': border.d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'H': {
        'border': border.l_thin_d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'I': {
        'border': border.d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 6
    },
    'J': {
        'border': border.l_drop_d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'K': {
        'border': border.l_thin_d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'L': {
        'border': border.d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'M': {
        'border': border.d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'N': {
        'border': border.l_thin_d_thin,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    },
    'O': {
        'border': border.d_thin_r_thick,
        'font': Font(size=10, bold=True),
        'alignment': Alignment(horizontal='center', vertical='center',wrap_text=True),
        'width' : 10
    }
}




为什么表格传入后美化~~单元格不会换行显示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-31 09:56:47 | 显示全部楼层
laiyuanjie 发表于 2024-05-31 09:56
class BeautifySheet:
    def __init__(self):

  ...


在你的代码中,单元格不会换行显示的问题可能是因为在设置对齐方式时,未正确指定`wrap_text`属性为`True`。请修改 `fun_beautify` 方法中的以下部分:

  1. self.alignment = self.style
复制代码


修改为:
  1. self.cell.alignment = self.style['alignment']
复制代码


此外,在设置列宽时,也应使用正确的语法:
  1. self.sheet.column_dimensions[self.column_letter].width = self.style['width']
复制代码


请根据以上修改,重新运行代码,看看是否能实现单元格换行显示的效果。

如果问题仍然存在,请确保在创建Excel表格时启用了文本自动换行功能。如需启用该功能,请使用以下代码片段:

  1. ws = wb.active
  2. for row in ws.iter_rows():
  3.     for cell in row:
  4.         cell.alignment = Alignment(wrapText=True)
复制代码


其中,`wb` 是你的 `Workbook` 对象。将此代码放在 `wb` 加载或创建后,并在进行美化操作前执行,以确保启用了文本自动换行。

希望这些修改能够解决你的问题。如果仍有疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-31 10:07:56 | 显示全部楼层
FishC 发表于 2024-5-31 09:56
在你的代码中,单元格不会换行显示的问题可能是因为在设置对齐方式时,未正确指定`wrap_text`属性为`Tr ...

那我的那串代码里,要调整行高得怎么弄
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-31 10:08:19 | 显示全部楼层
laiyuanjie 发表于 2024-05-31 10:07
那我的那串代码里,要调整行高得怎么弄


要调整行高,你可以在`fun_beautify`方法中添加以下代码来实现:

  1. for row in self.sheet.iter_rows():
  2.     for cell in row:
  3.         cell.alignment = self.style['alignment']
  4.         cell.font = self.style['font']
  5.         cell.border = self.style['border']
  6.         self.sheet.row_dimensions[cell.row].height = 20  # 设置行高度
复制代码


将上述代码添加到`for self.cell in self.column:`的循环内部,它会遍历每个单元格,并设置字体、对齐方式、边框以及行高。这里的`20`是行高度的示例值,你可以根据需要调整为合适的值。

在这段代码中,我们使用`self.sheet.row_dimensions[cell.row].height`来设置行高。`cell.row`表示当前单元格所在的行号,`height`属性则用于设置行高。

请在你的代码中添加上述修改后,再次测试是否能够成功调整行高。如果还有其他疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 01:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表