python 做表格分析_python表格解析.doc

WxPythonInAction/ChapterFourteen

窗体顶端

??

窗体底端

登录

首页

CPUG

OpenBookProject

行者堂

更新

搜索

帮助

ChapterFourteen

只读网页

信息

附件

?

?????????????????????? ? ?

窗体底端

14?网格(grid)控件

本章内容包括:

创建网格(grid)

添加行和单元格(cell),并且处理列的首部

使用一个自定义的单元格(cell)描绘器(renderer)

创建自定义的编辑器

捕获用户事件

网格控件大概是wxPython中最复杂和最灵活的一个窗口部件。在这一章,你将有机会接触到这个控件的许多特性。我们将讨论如何输入数据到网格控件以及如何处理该控件的显示属性,并且我们还将讨论自定义编辑器和描绘器。网格控件使你能够在一个类似电子表格格式的网格中显示表格数据。该控件允许你为行和列指定标签,以及通过拖动网格线来改变网格的大小,并且可以为每个单元格单独指定字体和颜色属性。

在最常见的情况下,你一般会显示一个简单的字符串值。然而,你也能为任一单元格指定一个自定义的描绘器,以使你能够显示不同的数据;你可以有编辑表中的单元格,并且对不同的数据使用不同类型的编辑器。你还能够创建你自己自定义的描绘器和编辑器,这使得你在单元格数据的显示和处理上可以非常的灵活,几乎没有什么限制。网格控件还有大量的鼠标和键盘事件,你可以程序中捕获它们并用来触发相关的代码。

我们将通过展示两个创建wxPython网格的方法来作为我们讨论的开始。

创建你的网格

网格控件是用以显示一个二维的数据集的。要使用该控件显示有用的信息,你需要告诉该控件它工作所基于的是什么数据。在wxPython中,有两种不同的机制用于在网格控件中处理数据,它们之间在处理数据的添加,删除和编辑的方式上有些许的不同。

* 网格控件可以直接处理每行和每列中的值。

* 数据可以通过使用一个网格表(grid?table)来间接地处理。

较简单的一种是使用网格控件直接处理值。在这种情况下,网格维护着数据的一份拷贝。在这种情况下,如果有大量的数据或你的应用程序已经有了一个现存的网格类的数据结构,那么这可能显得比较笨拙。如果是这样,你可以使用一个网格表来处理该网格的数据。参见第5章来回顾一下在MVC架构中,网格表是如何被作为一个模型的。

如何创建一个简单的网格?

尽管网格控件有大量的方法用于控件精确的显示和数据的管理,但时开始使用一个网格控件是十分简单的。图14.1显示了一个简单的网格,其中的单元格中添加了一些字符串数据。

图14.1

网格控件是类wx.grid.Grid的实例。由于网格类及相关类的尺寸的原因,实际中许多的程序都不使用它,wxPython的网格类存在于它们自己的模块中,它们不会被自动导入到核心的名字空间中。wx.grid.Grid的构造函数类似于其它的控件的构造函数。

切换行号显示

1 wx.grid.Grid(parent, id, pos=wx.DefaultPosition,

2 size=wx.DefaultSize, style=wx.WANTS_CHARS,

3 name=wxPanelNameStr)

其中的所有的参数与wx.Window的构造函数是相同的,并且有相同的意义。wx.WANTS_CHARS样式是网格的默认样式,除此之外,wx.grid.Grid没有为自己定义特别的样式。由于网格类的复杂性,所以在程序中,你一般要自定义网格类的一个子类来实现一个网格,而非直接使用wx.grid.Grid的一个实例。

和我们所见过的别的控件不同,调用该构造函数不足以创建一个可用的网格。有两个方法用以初始化网格

*?CreateGrid()?*?SetTable()

在这一节,我们将讨论一个方法,第二个方法将在网格表的讨论中提及。

要显式地初始化网格,可以使用方法CreateGrid(numRows,?numCols,?selmode=wx.grid.Grid.SelectCells)。这个方法应该在构造函数之后被直接地调用,并用必须在网格被显示之前调用。参数numRows,?numCols指定了网格的初始大小。参数selmode指定了网格中单元格的选择模式,默认值是wx.grid.Grid.SelectCells,意思是一次只选择一个单元格。其它的值有wx.grid.Grid.SelectRows,意思是一次选择整个行,wx.grid.Grid.SelectionColumns,意思是一次选择整个列。创建之后,你可以使用方法GetSelectionMode()来访问选择模式,并且你可以使用方法SetSelectionMode(mo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python爬虫爬取在线表格,可以借助requests库发送网络请求,获取网页的HTML内容。然后使用parsel库对HTML进行解析,提取出表格数据。接下来,可以使用pandas库将表格数据转换为DataFrame对象,方便后续的数据处理和分析。最后,可以使用python-docx库创建一个新的Word文档,并将表格数据写入到文档中。 下面是一个示例代码,演示了如何使用Python爬虫爬取在线表格并将数据写入Word文档: ```python import requests from parsel import Selector import pandas as pd from docx import Document # 发送网络请求,获取网页内容 url = "https://example.com/table.html" # 替换成实际的表格网址 response = requests.get(url) html = response.text # 使用parsel解析HTML,提取表格数据 selector = Selector(html) table = selector.xpath("//table") rows = table.xpath(".//tr") data = [] for row in rows: cells = row.xpath(".//td/text()").getall() data.append(cells) # 将数据转换为DataFrame对象 df = pd.DataFrame(data) # 创建一个新的Word文档 doc = Document() # 写入标题 doc.add_heading("Table Data", level=1) # 写入表头 table_head = doc.add_table(rows=1, cols=len(df.columns)) for i, header in enumerate(df.columns): table_head.cell(0, i).text = header # 写入表格数据 table_body = doc.add_table(rows=len(df), cols=len(df.columns)) for i, row in enumerate(df.values): for j, value in enumerate(row): table_body.cell(i, j).text = str(value) # 保存Word文档 doc.save("table_data.docx") ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值