- 如何对Excel文件 *** 作
- 前言
- 一、xlsx和xls的区别
- 二、对Excel的读取与写入
- 1.xlwt和xlrd库
- 2.对代码Excel进行读取
- 3.对Excel的写入
- 4.对Excel文本写入(方法二)
- 5.文件保存格式
- 总结
前言
Excel是Windows系统最常见的存储数据的一种文件,也是可以看做一种小型的数据库。我们便可以通过对Excel进行 *** 作,进行数据存储和读取。
一、xlsx和xls的区别
现在还有很多人在用 Excel 2003 版本,即 xls 格式,那么 xls 和 xlsx 有什么区别呢?
xls 是一个特有的二进制格式,其核心结构是复合文档类型的结构,而 xlsx 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小。
深入了解:https://blog.csdn.net/weixin_44449116/article/details/122783406
在使用库之前,先下载库:cmd中 pip install 库名/包名
python第三方库的安装教程
接下来就是导包:
import xlrd
import xlwt
import xlrd
import xlwt
xlwt是对Excel文件进行写 *** 作,而xlrd是对Excel进行读 *** 作
2.对代码Excel进行读取
import xlrd2 #和xlrd库一样,只不过由于版本xlrd版本过高,不支持本地Excel文件:xlrd.biffh.XLRDError: Excel xlsx file; not supported
workbook = xlrd2.open_workbook(R"19检测技术实验数据.xlsx") #1.首先你得获取读取的对象
#2.再获取sheet对象
sheet1 = workbook.sheet_by_index(0) #按index索引sheet对象
sheet2 = workbook.sheet_by_name("19自动化2") #按名字索引sheet对象
sheets = workbook.sheets() #获取所有sheet对象
#3.获取单元格cell对象
#获取指定行和列的对象sheet.cell(row,col)
cell = sheet1.cell(1,1)
print(cell.ctype) #获取cell单元格文本类型
print(cell.value)
#获取指定行的某几列对象cell:sheet.row_slice(row,start_col,end_col)
rows = sheet1.row_slice(1,1,10)
print(rows)
#获取指定列的某几行对象sheet.col_slice(col,start_row,end_row)
cols = sheet1.col_slice(1,1,10)
print(cols) #
#获取指定行和列的值sheet.cell_value(row,col)
print(sheet1.cell_value(1,1)) #
3.对Excel的写入
import xlwt
workbook = xlwt.Workbook() #1.首先获取到workbook对象
#2.添加 *** 作的sheet对象,并返回sheet
sheet = workbook.add_sheet("15",cell_overwrite_ok=True) #cell_overwrite_ok=True:设置单元格可重复写,如果不设置,重复写会报
#错Exception: Attempt to overwrite cell: sheetname='19' rowx=0 colx=0
style = xlwt.easyxf() #获取style对象
font = xlwt.Font()
font.height = 360
font.italic = True
font.bold = True
style.font = font
sheet.write(0,1,"222",style) #3.最后指定第1行,第2列单元格写入
workbook.save("1zidonghua.xlsx") #4.最后一定要保存
4.对Excel文本写入(方法二)
用上面的方法写入有不足之处就是,他会将原有的信息全部覆盖,类似于当我们向一个file文件写入 *** 作时,如果使‘w’形式写入时,他会覆盖掉原有文本之后,再将文本写入。而上面 *** 作也是类似,所以使用新的方法就能实现。
首先我们要下载新的库xlutils库,使用xlutils.copy.copy()函数实现 *** 作。实现在原有的Excel基础上 *** 作,而不覆盖原来的Excel文件
import xlutils.copy
#1.首先建立一个readbook对象
read = xlrd2.open_workbook("1zidonghua.xls",formatting_info=True) #formatting_info=True防止丢失文件原有格式
#2.再使用xlutils.copy.copy()将其转换为xlwt.Workbook对象
workbook = xlutils.copy.copy(read)
#3.在获取 *** 作的sheet对象
sheet = workbook.get_sheet(0)
#4.最后对指定的cell进行修改
sheet.write(0,3,"你好呀!",)
sheet.write(0,2,"你好呀!",)
#5.再保存workbook对象
workbook.save("1zidonghua.xls")
import xlwt
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("15",cell_overwrite_ok=True) #cell_overwrite_ok=True:设置单元格可重复写,如果不设置,重复写会报
#错Exception: Attempt to overwrite cell: sheetname='19' rowx=0 colx=0
# sheet.write(0,0,"张三",xlrd.XL_CELL_NUMBER)
style = xlwt.easyxf()
font = xlwt.Font()
font.height = 360
font.italic = True
font.bold = True
style.font = font
sheet.write(0,4,"222",style)
workbook.save("1zidonghua.xls")
显然由对比来看,直接用xlwt库对Excel进行写 *** 作,会覆盖掉原有的数据,所以切忌用他来对原有的文件进行编辑 *** 作,否则丢失会原有数据。
这里建议以 .xls 结尾,由前面可知 .xls文件所支持存储的行列少,如果你的电脑是只支持 .xls文件,当你以 .xlsx 结尾时,文件转为 .xls文件就会有数据丢失,这只是一方面问题。
总结
不管是对Excel写还是读取 *** 作,首先建立一个workbook对象,再获取你要 *** 作的sheet对象,在对单元格对象进行 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)