年前學(xué)習(xí)xlwings時斷斷續(xù)續(xù)產(chǎn)出的存貨,現(xiàn)在整理出來分享給需要的小伙伴們。
1 .新建保存重命名表、插入刪除行列、復(fù)制行列,批量寫入數(shù)據(jù)
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))
#復(fù)制第二列到第一列,可以帶格式復(fù)制
sht.range('B1').api.EntireColumn.Delete()
#刪除第二列B列
wb.save(r'F:\PythonData\xlwings\NewData.xlsx')
xw.App().quit()
#退出整個excel,不寫的話打開excel會顯示被其他人使用
2 .獲取有數(shù)據(jù)的所有行數(shù)和列數(shù)
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有時會需要在原表格上進(jìn)行更改,當(dāng)然可以選擇提取數(shù)據(jù)再進(jìn)行相關(guān)操作,也可以操作之后另存為。
另存為的方法如下:
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 .調(diào)用api:設(shè)置excel對齊方式,框線,背景顏色,字體加粗等
我們先在excel把自己想要的格式設(shè)置出來:
'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 = "傾斜"
#設(shè)置為斜體
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
#設(shè)置下劃線
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
#設(shè)置全框線
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()
如果有任何問題,歡迎留言。