如何使用Excel和Python将3列连接成1列?

时间:2017-02-09 01:55:08

标签: python excel openpyxl

我正在开发一个GIS软件项目,我需要一个包含YYYY-MM-DD格式日期的列。目前,在Excel中我有3列:1列表示年份,1表示月份,1列表日期。看起来像这样:

|     A    |     B     |      C     |
|   2012   |     1     |      1     |
|   2012   |     2     |      1     |
|   2012   |     3     |      1     |
             ...etc...

我需要它看起来像这样:

|     A     |
| 2012-01-01|
| 2012-02-01|
| 2012-03-01|

我需要几种相同格式的工作簿,所以我认为python可能是一个有用的工具,所以我不必手动连接Excel中的所有内容。

所以,我的问题是,是否有一种简单的方法可以不仅连接这三列,还可以在月份和日期前面添加零值?

我一直在尝试使用python库openpyxl,但到目前为止还没有提出任何有用的东西。任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

如果你要留在excel中,你也可以使用excel宏脚本。如果您的年,月和日位于ABC列中,则只需在列D中键入此内容即可将其连接起来,然后将其格式设置为日期并调整填充。

=$A1 & "-" & $B1 & "-" & $C1

答案 1 :(得分:0)

试试这个:

  def DateFromABC(self,ws):
    import datetime

    # Start reading from row 1
    for i,row in enumerate(ws.rows,1):
      sRow = str(i)
      # datetime goes into column 'D'
      Dcell = ws['D'+sRow]

      # Set datetime from 'ABC'
      Dcell.value = datetime.date(year=ws['A'+sRow].value,
                                  month=ws['B'+sRow].value,
                                  day=ws['C'+sRow].value
                                  )
      print('i=%s,tpye=%s, value=%s' % (i,str(type(Dcell.value)),Dcell.value ) )
    #end for
  #end def DateFromABC

使用Python测试:3.4.2 - openpyxl:2.4.1 - LibreOffice:4.3.3.2