Excel的写入和读 *** 作,以及.xls和.xlsx文件的区别

Excel的写入和读 *** 作,以及.xls和.xlsx文件的区别,第1张

如何对Excel文件 *** 作

目录
    • 如何对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

二、对Excel的读取与写入 1.xlwt和xlrd库
在使用库之前,先下载库: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进行写 *** 作,会覆盖掉原有的数据,所以切忌用他来对原有的文件进行编辑 *** 作,否则丢失会原有数据。

5.文件保存格式

这里建议以 .xls 结尾,由前面可知 .xls文件所支持存储的行列少,如果你的电脑是只支持 .xls文件,当你以 .xlsx 结尾时,文件转为 .xls文件就会有数据丢失,这只是一方面问题。


总结

不管是对Excel写还是读取 *** 作,首先建立一个workbook对象,再获取你要 *** 作的sheet对象,在对单元格对象进行 *** 作。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/922840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存