Board logo

标题: [原创代码] pythton 读写EXCEL文件 [打印本页]

作者: codegay    时间: 2016-3-5 06:49     标题: pythton 读写EXCEL文件

  1. """
  2. python提取PKPM软件数据写入到EXCEL文件.py
  3. http://www.oschina.net/question/2661202_2154877
  4. 2016年3月5日 00:34:38 codegay
  5. 原文数据很多没说清楚,省点精力就写个大概。
  6. """
  7. import re
  8. import openpyxl
  9. with open("a.txt",encoding="utf-8") as f:
  10.     txt=f.read()
  11. #表头   
  12. head=["标准层","N-C","工况","Nu","Uc","N-C","MX","MY","N"]
  13. wb=openpyxl.Workbook()
  14. ws=wb.active
  15. ws.append(head)
  16. rec=re.findall("""N-C=.*?(\d+) .*?Nu=\s*([-+]?\d+)\. Uc=  ([-+]?\d+[\.\d]*).*?抗剪承载力""",txt,re.DOTALL)
  17. print(rec)
  18. for r in range(0,3):
  19.         ws['B'+str(2+r)]=rec[r][0]#N-C
  20.         ws['D'+str(2+r)]=rec[r][1]#Nu
  21.         ws['E'+str(2+r)]=rec[r][2]#Uc
  22. wb.save("test.xlsx")
复制代码

作者: codegay    时间: 2016-3-5 07:40

本帖最后由 codegay 于 2016-3-6 05:30 编辑

上面使用到一个叫openpyxl的库,基本用法其实很简单。不过放到以前我可能看不懂其用法。不过经过最近写了比较多的代码之后,对python的基础知识掌握得比较好了。上手看了一眼官方示例代码就学会用了。
  1. from openpyxl import Workbook
  2. wb = Workbook()
  3. # grab the active worksheet
  4. ws = wb.active
  5. # Data can be assigned directly to cells
  6. ws['A1'] = 42
  7. # Rows can also be appended
  8. ws.append([1, 2, 3])
  9. # Python types will automatically be converted
  10. import datetime
  11. ws['A2'] = datetime.datetime.now()
  12. # Save the file
  13. wb.save("sample.xlsx")
复制代码

作者: codegay    时间: 2016-3-5 07:42

本帖最后由 codegay 于 2016-3-5 07:45 编辑

用 openpyxl 处理 xlsx 文件
这篇文章写得挺好。
http://liyangliang.me/posts/2013 ... d-write-xlsx-files/
openpyxl 是一个用来处理 excel 文件的 python 代码库。
Python 有一些内置的功能相似的代码库,不过我都没用过,而且好像都有不少局限性。
openpyxl 用起来还是挺简单的,对照文档就可以解决一些基本需求,比如常见的都写操作。
不过有一个前提,它只能用来处理 Excel 2007 及以上版本的 excel 文件,也就是 .xlsx/.xlsm 格式的表格文件。
顺便提一下,xls 和 xlsx 是两种完全不同的格式,其本质的差别相比字面的区别要多很多。
xls 的核心结构是复合文档类型的结构,而 xlsx 的核心结构是 XML 类型的结构,
采用的是基于XML的压缩方式,使其占用的空间更小。xlsx 中最后一个 x 的意义就在于此。

作者: zxlrock    时间: 2016-3-5 15:42

回复 1# codegay


我这个跑了下机子会卡死,怎么回事啊?

开源那边其实是我提的问题,在这里也谢谢你。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2