http://blog.csdn.net/pipisorry/article/details/50368044
def doc2txt(): ''' 将doc文档转换成txt文档 :return: ''' from win32com import client INPUT_DIR = r'C:\Users\pi\Desktop\New folder' OUTPUT_DIR = r'C:\Users\pi\Desktop\txts' word = client.Dispatch('Word.Application') for doc_name in listdir(INPUT_DIR): print(doc_name) doc_full_name = path.join(INPUT_DIR, doc_name) doc = word.Documents.Open(doc_full_name) doc.SaveAs(path.join(OUTPUT_DIR, doc_name.split('.')[0]), 4) doc.Close() word.Quit()
wdFormatDocument = 0 wdFormatDocument97 = 0 wdFormatDocumentDefault = 16 wdFormatDOSText = 4 wdFormatDOSTextLineBreaks = 5 wdFormatEncodedText = 7 wdFormatFilteredHTML = 10 wdFormatFlatXML = 19 wdFormatFlatXMLMacroEnabled = 20 wdFormatFlatXMLTemplate = 21 wdFormatFlatXMLTemplateMacroEnabled = 22 wdFormatHTML = 8 wdFormatPDF = 17 wdFormatRTF = 6 wdFormatTemplate = 1 wdFormatTemplate97 = 1 wdFormatText = 2 wdFormatTextLineBreaks = 3 wdFormatUnicodeText = 7 wdFormatWebArchive = 9 wdFormatXML = 11 wdFormatXMLDocument = 12 wdFormatXMLDocumentMacroEnabled = 13 wdFormatXMLTemplate = 14 wdFormatXMLTemplateMacroEnabled = 15 wdFormatXPS = 18
照着字面意思应该能对应到相应的文件格式,如果你是office2003可能支持不了这么多格式。word文件转html有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字8、10),区别是如果是wdFormatHTML格式的话,word文件里面的公式等ole对象将会存储成wmf格式,而选用wdFormatFilteredHTML的话公式图片将存储为gif格式,而且目测可以看出用wdFormatFilteredHTML生成的HTML明显比wdFormatHTML要干净许多。
当然你也可以用任意一种语言通过com来调用office API,比如PHP.
def openpyxl_excel(FILENAME=r'C:\Users\pi\Desktop\1.xlsx'): ''' 只能操作office 2010+版本文件 ''' import openpyxl as xl wb = xl.load_workbook(FILENAME) # 读取excel文件 ws = wb.get_sheet_by_name(wb.get_sheet_names()[0]) # 选择某个sheet pro_spec = [i[0].value for i in ws['H1:H' + str(ws.max_row)]] # 选择某一列的所有数据 # 对选中的数据进行操作 pro_spec = [item[0:item.rfind('*')] if item is not None and item.count('*') == 2 else item for item in pro_spec] for index, i in enumerate(ws['H1:H' + str(ws.max_row)]): i[0].value = pro_spec[index] # 将数据修改到excel文件单元格中 wb.save(FILENAME) # 保存文件修改
[Python XLRD Error : formula/tFunc unknown FuncID:186]
[官网主页homepage]
[python操作excel之xlrd]
前提是预先安装有Python for Windows extensions (pywin32)和Office 2010。
安装命令是:pip install pyvot
微软官方Excel管理Python模块
import xl
把Python内容导入到Excel中
>>> xl.Workbook() # 创建空的Excel表单,状态为active>>> a = range(1,10) # 一个Python列表>>> a[1, 2, 3, 4, 5, 6, 7, 8, 9]>>> xl.view(a) # 将Python列表展示在Excel中
Python列表被拷贝进了Excel。
Excel内容转成Python对象
从Excel中获取数据需要xl.Range对象,这个对象代表要操作的单元格。xl.view函数返回选择的存储数据的单元格的范围。
>>> r = xl.view(range(1,10))>>> r >>>> r.get()[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]>>> sum(r) # ranges are iterable45.0
需要注意的是,view函数实际上选中了整个A列,但是Range.get假设我们只需要里面有用的数据。
现在我们可以修改Excel中的数据,然后重新获取数据回来。例如我们手动在Excel中删除一些行,把Excel中的数据改为这样:
>>> r.get() # get updated values[1.0, 20.0, 8.0, 9.0]
当前的选择范围仍旧是一个Range对象,这允许我们在Excel中筛选我们感兴趣的数据。
>>> xl.selected_range().get()8.0
使用Range对象的注意事项:
它排除了表头行(get("ColumnName").get()不包含"ColumnName")
它只从被使用了的范围里面进行选择。相对应的,原生的Excel COM API有一个非常令人沮丧的问题,就是如果你选择一列,它返回一百万个空的单元格给你。
Workbook.Range方法相比之下只处理A1这种风格的引用,和命名范围。
FILENAME = r'C:\Users\pi\Desktop\5-3入库.XlS' def xl_excel(): ''' 微软官方xl模块 ''' import xl book = xl.Workbook(FILENAME) # 打开文件 pro_spec = book.get("H:H").get() # 获得某一列数据 # 对数据进行操作 pro_spec = [item[0:item.rfind('*')] if item is not None and item.count('*') == 2 else item for item in pro_spec][1:] xl.view(pro_spec, to=book.get("I:I")) # 将数据写入对应列[ 微软官方Excel管理Python模块]
[Getting Started with Pyvot]
不过lz推荐用pandas处理excel数据,毕竟datafram数据结构就和excel表一样。
[python对象与json ]
ref:数据编码和处理