前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-Excel-03-对已存在Excel:批量赋值,清空单元格

Python-Excel-03-对已存在Excel:批量赋值,清空单元格

作者头像
zishendianxia
发布2019-10-23 17:17:09
2.1K0
发布2019-10-23 17:17:09
举报
文章被收录于专栏:Python工程师Python工程师

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2

  • 这个系列讲讲PythonExcel的操作
  • 今天讲讲win32com模块对已有Excel文件的操作:批量赋值,清空单元格

Part 1:示例说明

  • 示例工作表,第1行1-5列,分别赋值1,2,3,4,5;第2行1-5列,分别赋值6,7,8,9,10
    • 如果大家有试过,采用上1讲中的方法,逐一赋值,当数据量较多时,会非常慢
    • 本文采用的批量赋值方法,速度提升非常明显
  • 清空第2行1-3列数据

Part 2:代码

批量赋值

代码语言:javascript
复制
import os
import win32com
from win32com.client import constants as c  # 旨在直接使用VBA常数

current_address = os.path.abspath('.')
excel_address = os.path.join(current_address, "示例.xlsx")
print(current_address)
xl_app = win32com.client.gencache.EnsureDispatch("Excel.Application")  # 若想引用常数的话使用此法调用Excel
xl_app.Visible = False  # 是否显示Excel文件
wb = xl_app.Workbooks.Open(excel_address)
sht = wb.Worksheets(1)
sht.Name = "示例"# 批量赋值

list_1 = [1, 2, 3, 4, 5]
list_length = len(list_1)
sht.Range(sht.Cells(1, 1), sht.Cells(1, list_length)).Value = list_1list_2 = [6, 7, 8, 9, 10]
list_length = len(list_2)
sht.Range(sht.Cells(2, 1), sht.Cells(2, list_length)).Value = list_2wb.Save()
wb.Close()

代码截图

执行结果

清空单元格

在运行之前,先给单元格加点底色,效果如图

代码语言:javascript
复制
import os
import win32com
from win32com.client import constants as c  # 旨在直接使用VBA常数

current_address = os.path.abspath('.')
excel_address = os.path.join(current_address, "示例.xlsx")
print(current_address)
xl_app = win32com.client.gencache.EnsureDispatch("Excel.Application")  # 若想引用常数的话使用此法调用Excel
xl_app.Visible = False  # 是否显示Excel文件
wb = xl_app.Workbooks.Open(excel_address)
sht = wb.Worksheets(1)
sht.Name = "示例"

rng_1 = sht.Range(sht.Cells(2, 1), sht.Cells(2, 3))
rng_1.Value = ""
rng_1.Interior.Pattern = c.xlNone
rng_1.Interior.TintAndShade = 0
rng_1.Interior.PatternTintAndShade = 0

wb.Save()
wb.Close()

代码截图

执行结果

不但清空了数值,也清空了底色

Part 3:部分代码解读

  1. 这里清空单元格,其实只是将空值赋给对应单元格
  2. rng_1.Interior.Pattern = c.xlNone这一段代码其实是在Excel录制宏中录制的,只是在xlNone前加上c,这样就可以正常引用Excel中常数。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Part 1:示例说明
  • Part 2:代码
  • Part 3:部分代码解读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档