vb.net读取excel并写入dgv_Python科普帖 csv & excel

9803cab0913da9ca4df84abaa3bdf053.png

0 存储数据的方式

常用的存储数据的方式有两种——存储成csv格式文件、存储成Excel文件(不是复制黏贴的那种)。前面,我有讲到json是特殊的字符串。其实,csv也是一种字符串文件的格式,它组织数据的语法就是在字符串之间加分隔符——行与行之间是加换行符,同行字符之间是加逗号分隔。它可以用任意的文本编辑器打开(如记事本),也可以用Excel打开,还可以通过Excel把文件另存为csv格式(因为Excel支持csv格式文件)。

运行以下三行代码:

eacc5c92b2af117099216f119ca185bf.png

将我们刚刚写入的csv文件下载到本地电脑,再用记事本打开,你会看到:

cf60b1a7ac7f1718bd009c10557a8ab9.png

用Excel打开,则是这样的:

1fc56817c7bb5fc64ec002c279d1e726.png

发现了吗?csv文件里的逗号可以充当分隔同行字符串的作用。为什么要加分隔符?因为不加的话,数据都堆在一起,会显得杂乱无章,也不方便我们之后提取和查找。这也是一种让数据变得有规律的组织方式。

另外,用csv格式存储数据,读写比较方便,易于实现,文件也会比Excel文件小。但csv文件缺少Excel文件本身的很多功能,比如不能嵌入图像和图表,不能生成公式。至于Excel文件,不用我多说你也知道就是电子表格。它有专门保存文件的格式,即xls和xlsx(Excel2003版本的文件格式是xls,Excel2007及之后的版本的文件格式就是xlsx)。

728f26d02247c45ef3ebcfbb766883bd.png

好啦,csv和Excel文件你都清楚了,我们可以继续学习存储数据的基础知识——如何写入与读取csv格式文件和Excel文件的数据。

1 存储数据的基础知识

6f5cea4d5127874eefe30d212d9b8ed0.png

存储成csv格式文件和存储成Excel文件,这两种不同的存储方式需要引用的模块也是不同的。操作csv文件我们需要借助csv模块;操作Excel文件则需要借助openpyxl模块。

2 基础知识:Excel写入与读取

请你跟着我的节奏,我们一起搞清楚如何往Excel格式文件写入和读取数据。不过,在开始讲Excel文件的写入与读取前,我们还得稍微了解一下Excel文档的基本概念(考验你对Excel有多了解的时候到了٩(๑❛ᴗ❛๑)۶)。

【提问抢答环节】请问工作薄、工作表和单元格在Excel里分别是指什么?

ad6408cb366f0492f1bc3ca9534f2ab4.png

一个Excel文档也称为一个工作薄(workbook),每个工作薄里可以有多个工作表(worksheet),当前打开的工作表又叫活动表。每个工作表里有行和列,特定的行与列相交的方格称为单元格(cell)。比如上图第A列和第1行相交的方格我们可以直接表示为A1单元格。清楚了Excel的基础概念,我们可以来说下openpyxl模块是怎么操作Excel文件的了。照例先说写入后说读取。

提醒:我们得先提前安装好openpyxl模块。课程的终端是已经安装好了,如果你想要在本地操作的话,就需要在本地上安装。(安装方法:window电脑:在终端输入命令:pip install openpyxl,按下enter键;mac电脑:在终端输入命令:pip3 install openpyxl,按下enter键),装好openpyxl模块后,首先要引用它,然后通过openpyxl.Workbook()函数就可以创建新的工作薄,代码如下:

73f59dfbbe48bee8b4d3d71eca4af8ed.png

创建完新的工作薄后,还得获取工作表。不然程序会无所适从,不知道要把内容写入哪张工作表里。

7e757c5610736220958d6b3946f375b3.png

添加完工作表,我们就能来操作单元格,往单元格里写入内容。

d23cb78e67b6d8ae2c3daf97f5506ef3.png

往单元格里写入内容只要定位到具体的单元格,如A1(根据Excel的坐标,A1代表第一列第一行相交的单元格),然后给这个单元格赋值即可。如果我们想往工作表里写入一行内容的话,就得用到append函数。

abf13267d5178280a64869e2898b5f03.png

如果我们想要一次性写入的不止一行,而是多行内容,又该怎么办?请你花10s思考一下这个问题。想出结果了吗?(提示:用for循环,再点击会出现答案)

680b55e8c24dd597942a84ad0bb201c9.png

成功写入后,我们千万要记得保存这个Excel文件,不然就白写啦!

98dfaa418743c441deffe5b99001b776.png

这样,Excel文件写入的代码我们就写好了,可以运行一下代码。

062be8380fd3578751296e1d7d280a4a.png

a9db2f5e046d0ececb1fd1b221bd08f0.png

下面,我们来搞定存储数据的另一个基础知识点——Excel文件的读取。

7cb2738c08d327b0ff814d33c40abb15.png

30ed091fa9a6a9ae6c5a820882793e09.png

程序打印出来的['new title']是工作表的名字;“漫威宇宙”是我们刚写入A1单元格的文字。一行行来看这个读取Excel文件的代码:

第14行代码:调用openpyxl.load_workbook()函数,打开“Marvel.xlsx”文件。

第15行代码:获取“Marvel.xlsx”工作薄中名为“new title”的工作表。

第16、17行代码:sheetnames是用来获取工作薄所有工作表的名字的。如果你不知道工作薄到底有几个工作表,就可以把工作表的名字都打印出来。

第18-20行代码:把“new title”工作表中A1单元格赋值给A1_cell,再利用单元格value属性,就能打印出A1单元格的值。

如果你对openpyxl模块感兴趣,想要有更深入的了解的话,推荐阅读openpyxl模块的官方文档:https://openpyxl.readthedocs.io/en/stable/

3 基础知识:csv写入与读取

首先,我们要引用csv模块。因为Python自带了csv模块,所以我们不需要安装就能引用它。你是不是会困惑,明明前面csv写入我们可以直接用open函数来写,为什么现在还要先引用csv模块?答案:直接运用别人写好的模块,比我们使用open()函数来读写,语法更简洁,功能更强大,待会你就能感受到。那么,何乐而不为?

86661147b80afe6c05682cd774f2ef41.png

然后,我们得创建一个新的csv文件,命名为“demo.csv”。“w”就是write,即文件写入模式,它会以覆盖原内容的形式写入新添加的内容。

友情附上一张文件读写模式表。你不需要背下来,之后不知道用什么模式时查查表就可以了。

8e75d5080e58bb28ab2819c7f53b9e4f.png

加newline=' '参数的原因是,可以避免csv文件出现两倍的行距(就是能避免表格的行与行之间出现空白行)。加encoding='utf-8',可以避免编码问题导致的报错或乱码。

创建完csv文件后,我们要借助csv.writer()函数来建立一个writer对象。

4a83b3b2872adb37962cdccdfdb07085.png

那怎么往csv文件里写入新的内容呢?答案是——调用writer对象的writerow()方法。

cc54811556e7886a216f0af14c14da05.png

提醒:writerow()函数里,需要放入列表参数,所以我们得把要写入的内容写成列表。就像['电影','豆瓣评分']。我们试着再写入两部电影的名字和其对应的豆瓣评分,最后关闭文件,就完成csv文件的写入了。

a3f75e26bdfc5628f4c96b64df2abbf9.png

运行代码后,名为“demo.csv”的文件会被创建。用Excel或记事本打开这个文件,你就能看到——

c59f558e32dc325fff1261b3192083b3.png

用csv模块写入数据这一个知识点我们已经清楚。接下来我们可以继续学习怎么读取csv文件的数据。现在,我们一行行来看刚刚读取“demo.csv”文件的代码,注释要认真阅读。

a5f1fcf43af5a21cd1010cfa827ff547.png

第1、2行代码:导入csv模块。用open()打开“demo.csv”文件,'r'是read读取模式, newline=''是避免出现两倍行距。encoding='utf-8'能避免编码问题导致的报错或乱码。

第3行代码:用csv.reader()函数创建一个reader对象。

第4、5行代码:用for循环遍历reader对象的每一行。打印row,就能读取出“demo.csv”文件里的内容。

补充一点:csv模块本身还有很多函数和方法,附上csv模块官方文档链接:

https://yiyibooks.cn/xx/python_352/library/csv.html#module-csv

这些函数和方法我们不需要全部都记下来,只要在需要用到的时候,学会查询就行。存储数据的基础知识我们就讲完了。接着我们进入实操项目——存储周杰伦的歌曲信息。首先,我们要先选择存储数据的方式。由于篇幅有限,在这里我们只选取用openpyxl模块存储成Excel文件的方式做演示。

4 项目:存储周杰伦的歌曲信息

上一关我们已经爬到了周杰伦歌曲信息的数据,所以只要在上一关代码的基础上,再加入存储数据的代码,【获取数据→解析数据→提取数据→存储数据】这整个爬虫的过程我们就都完成了!

f3a2805494880a89d29fe945940dc2ba.png

按照Excel文件写入的步骤,我们可以先在上一关的代码上,添加导入openpyxl模块、创建工作薄和获取工作表的代码。

50f3b99b02928bea25ec607379972500.png

既然我们要存储成Excel文件的话,我们得先添加表头,比如我们现在想存储歌曲名、所属专辑、播放时长和播放链接,那就可以先分别在A1、B1、C1、D1单元格中写入“歌曲名”、“所属专辑”、“播放时长”和“播放链接”。

ae75a2bab0b864eab158de0d8e2c6e7c.png

接下来,把所有歌曲名、所属专辑、播放时长和播放链接用append()函数,一一写入Excel文件。最后,保存这个文件,数据就会被我们都存储下来。

完整的代码如下(请重点关注加了注释的代码):

bc129a3a9a85c0a5d46e0d6e8a9f5e03.png

b375bef8e69b161320e911ff686c1c6e.png

4939a1771ad889c59cdd72ecea396dcd.png

运行代码,“Jay.xlsx”文件就会被创建。打开这个文件就可以看到存储的数据。

d87dee61aa1e55b08f81f28094460e3c.png

接下来是简单的复习(刚才选择跳过csv模块的同学,也可以看看csv模块的复习内容,毕竟温故而知新)。

355a9be4637f942b6281b85b16185b69.png

f1a6180e805847115c573af4ffda766f.png

c01a08d6d8ffc018aa4eca595f0fcdc4.png

a559f52f91185dac393422eefa6c2f93.png

c9d48650c854dd6e617cc117fd66f24d.png

d027a519615c73e37bb2b42b0b10ba5c.png

d677f65b80fac17279303c7ff9674f6d.png

8c1fc3ae12a4fba9c4eb47caa4c3ff01.png

95f567900535e6a13fe6574c6d7659f1.png

这一关,我们引用了csv模块和openpyxl模块。这两个都是前人编写好的模块,我们拿来就能实现存储数据的操作。正是有了前人编写好的模块,我们才不用费心费力,再去编写一个全新的能实现存储功能的代码。这种前人创造的知识沉淀,以无私的方式分享给我们使用的精神,叫开源精神。在编程世界里,这种精神就是最宝贵的财富。

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页