-2

docx ファイルを開いていますが、そこに csv ファイルを埋め込みたいと考えています。

csv はアイコンとして表示されます。

Word ファイルで ecaxt の位置を設定するにはどうすればよいですか?

これまでの私のコードは次のとおりです。

from Tkinter import Tk
from tkFileDialog import askopenfilename
import csv
from docx import Document
import datetime


today = datetime.date.today()

Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
#filename = askopenfilename(title='Specify data csv file',filetypes=[('text files', '.csv')]) # show an "Open" dialog box and return the path to the selected file
filename='C:/Documents and Settings/K/My Documents/LiClipse Workspace/WO_templates/WO_templates/data.csv'

with open(filename, 'r') as csvfile:
    data_csv = csv.reader(csvfile, delimiter=',')
    for row in data_csv:
        if row[3]<>'Name':
            document = Document('2G_Template.docx')

            for table in document.tables:
                for _cell in table._cells:
                    for paragraph in _cell.paragraphs:
                        if '%DATE%' in paragraph.text:
                            paragraph.text=str(today.day)+'/'+str(today.month)+'/'+str(today.year)
                        if 'R%RR%' in paragraph.text:
                            paragraph.text='R'+row[0]                       
                        if '%DESC%' in paragraph.text:
                            paragraph.text=row[1]

            for paragraph in document.paragraphs:
                if '%DEL_PLAN%' in paragraph.text:
                    paragraph.text='Deletion PLan: '+row[2]



            document.save(row[3]+'.docx')

各サイクルの次のステップは、csv ファイルを選択して、Word ファイルに埋め込むことです。これは、[アイコンとして表示] オプションが選択されている、Word での特殊な貼り付けアクションに相当します。

4

1 に答える 1

0

pywin32 ライブラリを使用して csv を埋め込むことができました。

import win32com.client as win32
.
.
.
word = win32.gencache.EnsureDispatch('Word.Application')
doc=word.Documents.Open(doc_path)
word.Visible = False
.
.
.
doc.InlineShapes.AddOLEObject(FileName=doc_path3,DisplayAsIcon=1,Range=range1,IconLabel="CSV",IconFileName=doc_path4)

word.ActiveDocument.SaveAs(doc_path2)
doc.Close()
于 2015-04-17T12:22:03.357 に答える