年前学习xlwings时断断续续产出的存货,现在整理出来分享给需要的小伙伴们。 (相关资料图) 1.新建保存重命名表、插入删除行列、复制行列,批量写入数据 import xlwings as xw wb = xw.Book() #新建一个工作表 sht = wb.sheets[0] #shee1 sheet_name = "NEWSHEET" sht.name = sheet_name #更改第一个sheet名字 col_a = [1,2,3,4,5,6,7] sht.range("A1:A7").options(transpose=True).value = col_a #整列赋值 sht.api.Columns(1).Insert() #在第一列前插入一列 sht.api.Rows(1).Insert() #在第一行前插入一行 sht.range("A3:A4").api.EntireRow.Delete() #删除3,4行 sht.api.Columns(2).Copy(sht.api.Columns(1)) #复制第二列到第一列,可以带格式复制 sht.range("B1").api.EntireColumn.Delete() #删除第二列B列 wb.save(r"F:\PythonData\xlwings\NewData.xlsx") xw.App().quit() #退出整个excel,不写的话打开excel会显示被其他人使用
2.获取有数据的所有行数和列数 used_range Used Range of Sheet. Returns: Return type: xw.Range
last_cell Returns the bottom right cell of the specified range. Read-only. Returns: Return type: Range
import xlwings as xw wb = xw.Book(r"F:\xlwings\OriginalData.xlsx") sht = wb.sheets[0] info = sht.used_range nrows = info.last_cell.row print(nrows) ncolumns = info.last_cell.column print(ncolumns)
3.读取一整个sheet到pandas.DataFrame import xlwings as xw import pandas as pd from pandas import Series,DataFrame wb = app.books.add() sht_All = wb.sheets[0] info = sht_All.used_range nrows = info.last_cell.row def GetDataFrame(Sheets,N,M): index1 = Sheets.range((1,1),(1,15)).value index2 = Series(index1) Data = Sheets.range((2,1),(N,M)).value Data = pd.DataFrame(Data,columns=index2) return Data m = GetDataFrame(sht_All,nrows,15)
4.保存与另存为 使用xlwings处理excel有时会需要在原表格上进行更改,当然可以选择提取数据再进行相关操作,也可以操作之后另存为。 另存为的方法如下: import xlwings as xw wb = xw.Book(r"F:\xlwings\OriginalData.xlsx") #or wb1 = xw.books.open(r"F:\xlwings\OriginalData01.xlsx") #打开文件 wb.save() #保存原文件 wb1.save(r"F:\xlwings\PresentData01.xlsx") #另存为PresentData01.xlsx
5 .调用api:设置excel对齐方式,框线,背景颜色,字体加粗等 我们先在excel把自己想要的格式设置出来: "One’:加粗,左对齐靠下 "Two’:倾斜,居中靠下 "Three’:下划线,左对齐靠上 "Four’:左对齐居中 "Five’:右对齐靠下 全框线,粉色 import xlwings as xw wb = xw.Book(r"F:\PythonData\xlwings\Style.xlsx") sht = wb.sheets[0] sht_color = sht.range((1,1)).color print(sht_color) #(255, 153, 255) sht.range((3,1)).color = (255, 153, 255) #A3背景颜色为粉色 sht_BoldA = sht.range((1,1)).api.Font.Bold print(sht_BoldA) #True sht_BoldB = sht.range((1,2)).api.Font.Bold print(sht_BoldB) #False sht.range((3,1)).value = "A3" sht.range((3,1)).api.Font.Bold = True #加粗 sht_Fontstyle = sht.range((1,2)).api.Font.FontStyle print(sht_Fontstyle) #倾斜 sht.range((3,2)).value = "B3" sht.range((3,2)).api.Font.FontStyle = "倾斜" #设置为斜体 sht_Underline = sht.range((1,3)).api.Font.Underline print(sht_Underline) #2,为下划线 sht.range((3,3)).value = "C3" sht.range((3,3)).api.Font.Underline = 2 #设置下划线 sht_style = sht.range((1,1),(1,5)).api.Borders.LineStyle print(sht_style) #1 #全框线 sht.range((3,1),(3,3)).api.Borders.LineStyle = 1 #设置全框线 sht_HA_A1 = sht.range((1,1)).api.HorizontalAlignment print(sht_HA_A1) #水平左对齐 #1 sht_HA_A2 = sht.range((1,2)).api.HorizontalAlignment print(sht_HA_A2) #水平居中 #-4108 sht_HA_A5 = sht.range((1,5)).api.HorizontalAlignment print(sht_HA_A5) #水平右对齐 #-4152 sht_VA_A3 = sht.range((1,3)).api.VerticalAlignment print(sht_VA_A3) #垂直靠上 #-4160 sht_VA_A4 = sht.range((1,4)).api.VerticalAlignment print(sht_VA_A4) #垂直居中 #-4108 sht_VA_A5 = sht.range((1,5)).api.VerticalAlignment print(sht_VA_A5) #垂直靠下 #-4107 wb.save() xw.App().quit()
如果有任何问题,欢迎留言。
|