python之 第一個問題

終極目標,將表格化的樹狀結構搞成word文檔的標題樹狀結構。
怎麼說呢,思路都是一樣的,只不過呈現方式不一樣,我想用word文檔裏面的目錄更加容易看清楚,而用Excel表格不是很容易看,但是用手動的話工作量太大了。所以用python搞一下。


功能拆分:
1.怎麼讀取Excel.並獲取文字流。
2.怎麼往word文檔裏面寫東西,並且設置標題格式。

工具:python ,vscode.

思路:看兩個例子,知道怎麼新建一個doc文檔,也知道怎麼讀取excel表格的東西。那麼就把表格裏面的東西填到word裏面就行了。
肯定用到循環的東西,注意python循環的的寫法就行,然後就是編程思路,也就是怎麼按照機器的寫法去批量化的思路。
比如,兩個for循環,從左往右,從上到下,什麼時候設爲一標題,什麼時候設爲2標題。這個說不清楚,代碼可以搞清楚。


注意事項:

  1. 用到兩個包,xlrd.docx.但是隻能用py2.7。雖然vscode可以在左下角切換版本,但是還是用cmd比較好。
  2. Python裏面對中文字符比較敏感
  3. 縮進是Python裏面的一種語法,必須有章法。
  4. 調試的時候在vscode裏面需要按F5然後進入調試狀態,可以設置斷點。
    代碼如下:
# -*- coding:UTF-8 -*-
import xlrd
from docx import Document
file = r'C:\Users\16143\Desktop\python\test.xls'
workbook = xlrd.open_workbook(filename=file)
sheetUse = workbook.sheet_by_name(u'項目管理')
nrows = sheetUse.nrows #獲取有效行數。
ncols = sheetUse.ncols #獲取有效列數。

document = Document()  #創建文檔

for j in range(nrows):#行數
    for i in range(ncols-1):#列數  for循環上有冒號
        celluse = sheetUse.cell_value(j,i) #而且for循環下面的東西必須有縮進
        
        if celluse != u'' and i ==0:
            document.add_heading(sheetUse.cell_value(j,4), level=1)
            if sheetUse.cell_value(j,5)!=u'':
                document.add_paragraph(
                sheetUse.cell_value(j,5)
                )
            break           
        elif celluse != u'' and i==1:
            document.add_heading(sheetUse.cell_value(j,4),level=2)
            if sheetUse.cell_value(j,5)!=u'':
                document.add_paragraph(
                sheetUse.cell_value(j,5)
                )
            break   
        elif celluse != u'' and i==2:
            document.add_heading(sheetUse.cell_value(j,4),level=3)
            if sheetUse.cell_value(j,5)!=u'':
                document.add_paragraph(
                sheetUse.cell_value(j,5)
                )
            break   
        elif celluse !=u'' and i==3:
            document.add_heading(sheetUse.cell_value(j,4),level=4)
            document.add_paragraph(
                sheetUse.cell_value(j,5)
            )
            break
        else:
            #document.add_heading("over",level=3)
            print("hellow")
            continue   

document.save('demo.docx')

當然裏面遇到的艱辛和坑就不說了,反正最後做出來了,很不錯。由於數據敏感,不放上來了,等下次有自己的數據再說。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章