"top_1 = pd.read_excel(xlsx_file, nrows=1)\n if '对手方接收时间' in top_1.columns.tolist():\n ix = top_1.columns.tolist().index('对手方接收时间') + 1\n print(ix)\n worksheet.Columns(ix).NumberFormatLocal = "yyyy/m/d h:m:s;@"\n worksheet.Columns(ix).value = worksheet.Columns(ix).value\n\n if '交易时间' in top_1.columns.tolist():\n ix = top_1.columns.tolist().index('交易时间') + 1\n print(ix)\n worksheet.Columns(ix).NumberFormatLocal = "yyyy/m/d h:m:s;@"\n worksheet.Columns(ix).value = worksheet.Columns(ix).value\n\n if '交易金额(分)' in top_1.columns.tolist():\n ix = top_1.columns.tolist().index('交易金额(分)') + 1\n print(ix)\n worksheet.Columns(ix).NumberFormatLocal = "G/通用格式"\n worksheet.Columns(ix).value = worksheet.Columns(ix).value\n\n if '账户余额(分)' in top_1.columns.tolist():\n ix = top_1.columns.tolist().index('账户余额(分)') + 1\n print(ix)\n worksheet.Columns(ix).NumberFormatLocal = "G/通用格式"\n worksheet.Columns(ix).value = worksheet.Columns(ix).value\n\n if '对手方接收金额(分)' in top_1.columns.tolist():\n ix = top_1.columns.tolist().index('对手方接收金额(分)') + 1\n print(ix)\n worksheet.Columns(ix).NumberFormatLocal = "G/通用格式" 继续使用win32操作xlsx 如何提高速度,原来的速度太慢 给出具体的代码 和讲解 中文回答内容:为了提高处理速度,可以尝试以下几种优化方法:\n\n1. 使用批量操作:不要逐个单元格地操作,而是尽可能地使用批量操作。例如,可以使用worksheet.Columns()方法一次选择多列,然后对选定的列进行操作。\n\n2. 减少与Excel文件的交互:尽量减少与Excel文件的交互次数。在处理数据时,将数据读取到内存中进行操作,然后再一次性写入Excel文件。\n\n3. 使用Python内置的库:考虑使用Pandas和Openpyxl等Python内置的库来处理Excel文件。这些库通常比使用win32com库更快速和高效。\n\n下面是对代码的一些优化建议:\n\n1. 一次性读取整个Excel文件的数据,而不是逐行或逐列读取。可以使用Pandas的pd.read_excel()方法读取整个文件,并将其存储为一个DataFrame对象。\n\n2. 对DataFrame对象进行操作,而不是直接操作Excel文件。Pandas提供了许多灵活且高效的方法来处理DataFrame中的数据。\n\n3. 使用Pandas的to_excel()方法一次性将处理后的数据写入Excel文件。\n\n下面是优化后的代码:\n\npython\nimport pandas as pd\n\n# 读取Excel文件\ndf = pd.read_excel(xlsx_file)\n\n# 对数据进行处理\nif '对手方接收时间' in df.columns.tolist():\n df['对手方接收时间'] = pd.to_datetime(df['对手方接收时间'], format='%Y-%m-%d %H:%M:%S')\n\nif '交易时间' in df.columns.tolist():\n df['交易时间'] = pd.to_datetime(df['交易时间'], format='%Y-%m-%d %H:%M:%S')\n\nif '交易金额(分)' in df.columns.tolist():\n df['交易金额(分)'] = df['交易金额(分)'].astype(float) / 100\n\nif '账户余额(分)' in df.columns.tolist():\n df['账户余额(分)'] = df['账户余额(分)'].astype(float) / 100\n\nif '对手方接收金额(分)' in df.columns.tolist():\n df['对手方接收金额(分)'] = df['对手方接收金额(分)'].astype(float) / 100\n\n# 将处理后的数据写入Excel文件\ndf.to_excel(xlsx_file, index=False)\n\n\n通过使用Pandas和一次性处理整个DataFrame,这种方法通常比逐个单元格地使用win32com库更快速和高效。


原文地址: https://www.cveoy.top/t/topic/p9Q0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录