これがプロセスです。dataというワークシート内にtemplateというxlsmファイルがあります。次に、5つのCsvファイルがあります。すべてのcsvファイルの内容をデータワークシート内に配置する必要があります。
日付が「07/09/12」の場合を除いて、問題ありません。Excelでは「09/07/12」になります。
だから私はデータと呼ばれるリストを持っています、これはその行の1つのプリントです
['07/09/12', 'LARO', 'MEDITERRAN', '245', 'UZES', '11', '0', '0', '0', '0', '11', '0']
私はこのコードでExcelファイルに入れています:
最初にファイルを開きます(xlは「withself asxl」を使用しているためです)
def open(self):
self.xl.Visible = 1
self.xl.ScreenUpdating = False
self.worksheet = self.xl.Workbooks.Open(self.getOutputFile())
次に、データワークシートを消去します
def cleanData(self):
sheet = self.xl.Sheets(self.sheetName)
def findNumberOfLines(start_line):
nb = 0
while sheet.Cells(start_line + nb, self.startColumn).Value is not None:
nb += 1
return nb
次に、データを入力します
def fillData(self):
sheet = self.xl.Sheets(self.sheetName)
noRow = self.startLine
for row in self.data:
noCol = self.startColumn
for i, value in enumerate(row):
sheet.Cells(noRow, noCol).Value = value
noCol+=1
noRow+=1
そして私は保存します
def save(self):
self.worksheet.Save()
そして、日と月がExcel内で反転されていることを除いて、すべてが良好です(US形式では表示されず、月と日が反転されたEUR形式が表示されます(10月3日は3月9日となり、「長い日付」形式を使用してテストされます)
奇妙なことに、日付を含むExcelセルは「標準」に設定されていますが、Pythonスクリプトによってファイルされると、「日付」に設定されます。
シートに記入するときの回避策 私はすべての日付を傍受し、それらを日時に変換しています、Excelはそれが好きなようです
def fillData(self):
sheet = self.xl.Sheets(self.sheetName)
noRow = self.startLine
pattern = re.compile('^\d+/\d+/\d+$')
for row in self.data:
noCol = self.startColumn
for i, value in enumerate(row):
if (pattern.match(str(value))):
date = value.rsplit('/')
sheet.Cells(noRow, noCol).Value = datetime(int(date[2]), int(date[1]), int(date[0]))
else: sheet.Cells(noRow, noCol).Value = value
noCol+=1
noRow+=1