上次我们介绍了如何打开,读取数据的方法,现在我们就说一说如何写入数据
一.向格子里写入并保存
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
sheet = workbook.active
sheet["A1"] = "hello world"
workbook.save(filename="2.xlsx")
我们发现在运行代码后,在A1自动填入了hello world
2.向cell实例中写入并保存
同样的 可以利用cell实例的方法实现:
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
sheet = workbook.active
cell = sheet["A1"]
cell.value = "hello the world"
workbook.save(filename="2.xlsx")
3.利用append()方法插入一行数据
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
sheet = workbook.active
news = [
["0","a","A"],
["1","a","A"],
["2","a","A"],
["3","a","A"],
["4","a","A"]
]
for new in news:
sheet.append(new)
workbook.save(filename="2.xlsx")
4.利用公式
查看openpyxl支持的公式
from openpyxl.utils import FORMULAE
print(FORMULAE)
frozenset({'REPLACEB', 'ERF', 'STDEVP', 'HEX2DEC', 'NORMINV', 'PROPER', 'COSH', 'ERROR.TYPE', 'VLOOKUP', 'DSTDEVP', 'ERFC', 'GAMMADIST', 'IMSQRT', 'CRITBINOM', 'ISNONTEXT', 'GAMMALN', 'MATCH', 'ISERR', 'RSQ', 'LARGE', 'DATEDIF', 'WEEKDAY', 'MEDIAN', 'PRICEMAT', 'MIRR', 'POISSON', 'LEFTB', 'ODDLYIELD', 'DGET', 'PV', 'IPMT', 'BIN2DEC', 'FVSCHEDULE', 'COUPNUM', 'SIGN', 'DOLLARDE', 'IMSUB', 'ATAN', 'SIN', 'FTEST', 'SQRT', 'FACT', 'SERIESSUM', 'FIXED', 'TTEST', 'TAN', 'ISREF', 'MDETERM', 'BAHTTEXT', 'DDB', 'CELL', 'CUMPRINC', 'SUMIF', 'MIDB', 'MROUND', 'WEEKNUM', 'TBILLEQ', 'IMCOS', 'CHOOSE', 'DCOUNTA', 'CUBERANKEDMEMBER', 'EDATE', 'FDIST', 'VALUE', 'TREND', 'RIGHTB', 'IMPRODUCT', 'LOGNORMDIST', 'DATEVALUE', 'DSTDEV', 'QUOTIENT', 'DISC', 'ASINH', 'CUBEMEMBERPROPERTY', 'NOW', 'ROW', 'SYD', 'SKEW', 'TODAY', 'ROUND', 'CUBESETCOUNT', 'NOMINAL', 'MAXA', 'SUBSTITUTE', 'TYPE', 'GROWTH', 'COUNTBLANK', 'DCOUNT', 'MINVERSE', 'EXP', 'OCT2DEC', 'IMREAL', 'INDIRECT', 'YIELDMAT', 'CLEAN', 'COUPDAYS', 'RANDBETWEEN', 'RATE', 'RTD', 'ROWS', 'UPPER', 'BETAINV', 'SMALL', 'DB', 'ISODD', 'CONCATENATE', 'XNPV', 'INDEX', 'MIN', 'ATAN2', 'MONTH', 'GESTEP', 'DURATION', 'MMULT', 'TRIMMEAN', 'PHONETIC', 'ROUNDUP', 'EFFECT', 'LOGINV', 'PRICEDISC', 'FINDB', 'EXACT', 'WEIBULL', 'DAY', 'DAYS360', 'CHIDIST', 'CUBEKPIMEMBER', 'EOMONTH', 'AMORLINC', 'TRUNC', 'FV', 'BINOMDIST', 'DEC2OCT', 'SECOND', 'TRIM', 'COVAR', 'AMORDEGRC', 'COUPPCD', 'RAND', 'MAX', 'IMLN', 'MULTINOMIAL', 'XIRR', 'SQRTPI', 'DPRODUCT', 'BESSELJ', 'IMSIN', 'CUMIPMT', 'OCT2HEX', 'COUNTIF', 'MID', 'LEN', 'LOOKUP', 'RIGHT', 'CUBESET', 'BESSELY', 'FISHER', 'IMEXP', 'ACCRINT', 'NORMSINV', 'IMSUM', 'BIN2HEX', 'PERMUT', 'LOG10', 'HOUR', 'DOLLARFR', 'LINEST', 'NEGBINOMDIST', 'POWER', 'TRANSPOSE', 'LOG', 'SEARCHB', 'IFERROR', 'WORKDAY ', 'LENB', 'MOD', 'T', 'GAMMAINV', 'MODE', 'PRODUCT', 'TBILLYIELD', 'HARMEAN', 'ISPMT', 'DEC2BIN', 'DEVSQ', 'VAR', 'HEX2OCT', 'ATANH', 'DVAR', 'IMLOG2', 'LN', 'REPT', 'SUBTOTAL', 'WORKDAY.INTL', 'ISNUMBER', 'ISLOGICAL', 'SEARCH', 'ECMA.CEILING', 'FISHERINV', 'SLOPE', 'LOGEST', 'INT', 'SUMIFS', 'TDIST', 'LEFT', 'BESSELK', 'COUNT', 'CORREL', 'ACCRINTM', 'COUNTA', 'IMARGUMENT', 'PERCENTRANK', 'VARA', 'ASC', 'NA', 'PPMT', 'INFO', 'SUMX2MY2', 'OCT2BIN', 'SUMSQ', 'VARP', 'MINUTE', 'CHIINV', 'IMABS', 'TEXT', 'CONVERT', 'HYPERLINK', 'COS', 'YEARFRAC', 'STANDARDIZE', 'ROUNDDOWN', 'TIMEVALUE', 'NPER', 'EVEN', 'AVEDEV', 'ISNA', 'PROB', 'YIELD', 'IMCONJUGATE', 'INTRATE', 'ACOS', 'PMT', 'NORMDIST', 'NPV', 'ASIN', 'CHAR', 'OFFSET', 'BESSELI', 'SINH', 'ISERROR', 'AVERAGEA', 'CEILING', 'ROMAN', 'DELTA', 'HYPGEOMDIST', 'AND', 'TRUE ADDRESS', 'NORMSDIST', 'FORECAST', 'SUM', 'SLN', 'FALSE', 'SUMXMY2', 'DMAX', 'IMDIV', 'IF', 'COLUMN', 'COUPDAYSNC', 'CUBEMEMBER', 'HEX2BIN', 'QUARTILE', 'GEOMEAN', 'DMIN', 'IMPOWER', 'DOLLAR', 'INTERCEPT', 'AREAS', 'TANH', 'DATE', 'ODDFPRICE', 'SUMX2PY2', 'FLOOR', 'YIELDDISC', 'STDEV STDEVA', 'DEC2HEX', 'ISTEXT', 'YEAR', 'GCD', 'LCM', 'FREQUENCY', 'PRICE', 'COUPNCD', 'IMAGINARY', 'TINV', 'CODE', 'N', 'CUBEVALUE', 'COMBIN', 'IMLOG10', 'TIME', 'DSUM', 'EXPONDIST', 'COLUMNS', 'AVERAGE', 'KURT', 'ABS', 'COUPDAYBS', 'VDB', 'MINA', 'JIS', 'ISEVEN', 'COMPLEX', 'SUMPRODUCT', 'OR', 'ODD', 'TBILLPRICE', 'PERCENTILE', 'VARPA', 'MDURATION', 'PI', 'FIND', 'PEARSON', 'RANK', 'REPLACE', 'DVARP', 'ISBLANK', 'IRR', 'RECEIVED', 'NETWORKDAYS', 'ODDLPRICE', 'AVERAGEIFS', 'RADIANS', 'CHITEST', 'CONFIDENCE', 'STDEVPA STEYX', 'AVERAGEIF', 'BETADIST', 'FACTDOUBLE', 'BIN2OCT', 'FINV', 'ZTEST', 'LOWER', 'ACOSH', 'ODDFYIELD', 'DEGREES', 'NOT', 'GETPIVOTDATA', 'NETWORKDAYS.INTL', 'HLOOKUP', 'ISO.CEILING', 'COUNTIFS', 'DAVERAGE'})
利用公式方法:直接利用赋值公式计算
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
sheet = workbook.active
sheet["D12"] = "=AVERAGE(A12:C12)"
workbook.save(filename="2.xlsx")
本方法求出来平局值,其他函数也可照此类推。
5.插入空白列或行
sheet.insert_cols(idx=2,amount=4)
workbook.save(filename="2.xlsx")
在第二列插入4列
sheet.insert_rows(idx=2,amount=4)
workbook.save(filename="2.xlsx")
在第二行插入4行
6.删除列和行
同样的 可以利用delete_rows/cols 删除空白列和行
sheet.delete_rows(idx=2,amount=4)
sheet.delete_cols(idx=2,amount=4)
7.移动某个格子
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
sheet = workbook.active
sheet.move_range("A2:C11",rows=3,cols=2)
workbook.save(filename="2.xlsx")
正整数为向右或者向下,负整数为向左或向上
8.创建新的sheet
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
print(workbook.sheetnames)
workbook.create_sheet("sheet11")
print(workbook.sheetnames)
workbook.save(filename="2.xlsx")
['Sheet1']
['Sheet1', 'sheet11']
9.删除一个sheet
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
print(workbook.sheetnames)
sheet = workbook["sheet11"]
workbook.remove(sheet)
print(workbook.sheetnames)
workbook.save(filename="2.xlsx")
['Sheet1', 'sheet11']
['Sheet1']
10.复制一个sheet
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
print(workbook.sheetnames)
sheet = workbook.active
workbook.copy_worksheet(sheet)
print(workbook.sheetnames)
workbook.save(filename="2.xlsx")
['Sheet1']
['Sheet1', 'Sheet1 Copy']
11.修改sheet的名称:
from openpyxl import load_workbook
workbook = load_workbook(filename="2.xlsx")
print(workbook.sheetnames)
sheet = workbook.active
sheet.title = "sdas"
workbook.copy_worksheet(sheet)
print(workbook.sheetnames)
workbook.save(filename="2.xlsx")
['Sheet1', 'Sheet1 Copy']
['sdas', 'Sheet1 Copy', 'sdas Copy']
12.创建新的excel文件
from openpyxl import Workbook
workbook = Workbook()
workbook.save(filename="new3.xlsx")
13.冻结窗格
sheet.freeze_panes = "A1"
14.筛选
sheet.auto_filter.ref = sheet.dimensions
以上便是excel与python结合的第二部分内容,后续将会持续更新excel,ppt,爬虫,人工智能等相关内容,敬请关注