首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python合并2个XLSX文件

Python合并2个XLSX文件
EN

Stack Overflow用户
提问于 2014-12-01 12:34:44
回答 1查看 251关注 0票数 1

我有两个XLSX文件需要合并。它们都是Excel2010文件(.xlsx),我所读到的是空格分隔(我愿意更正)。这两个文件都有相同的行数,行将对齐;例如,row1、file1将对应于row1、文件2等。这些文件有很长的字段,所以为了简单起见,我将只显示模拟数据。第一个文件的格式如下:

代码语言:javascript
复制
a 123 20 20141201
b 456 50 20141130
 .....

第二个文件的格式如下:

代码语言:javascript
复制
20141201
20141130
...

因此,我希望产出如下:

代码语言:javascript
复制
a 123 20 20141201 20141201
b 456 50 20141130 20141130
...

我的代码如下所示,但是似乎有两个问题:

首先,array3的输出格式不正确:

代码语言:javascript
复制
'a 123 20 20141201 \t\r\n', '20141201\n',
'b 456 50 20141130 \t\r\n', '20141130\n', 
....

如何正确连接这些以确保其他日期标记在选项卡、换行符等之前.(\t\n)

其次,当我将这个数组写入输出文件时,行是不一致的:

第一行中的所有内容都由1列分隔(注☺=白色方形符号,不确定为什么它以笑脸的形式出现?):

代码语言:javascript
复制
     col1                                  col2     col3     col4       col5
row1|a ☺ 123 ☺ 20 ☺ 20141201 ☺☺ 20141201

row2|b                                     456      50       20141130

row3|20141130    

row4|c ......................... 

我的密码在这里:

代码语言:javascript
复制
ins1 = open( "file1.xlsx", "r" )
array1 = []
for line in ins1:
    array1.append(line)
ins1.close()

ins2 = open( "file2.xlsx", "r" )
array2 = []
for line in ins2:
    array2.append(line)
ins2.close()  

array3 = []
for i in range(0, len(array1)):
    array3.append(array1[i])
    array3.append(array2[i])

resultFile = open("output.xlsx",'wb')
wr = csv.writer(resultFile)
print array3
wr.writerow(array3)
resultFile.close()

抱歉,我对Python非常陌生,所以以上可能不是最好的方法。我愿意接受关于如何解决这个问题的其他建议。我已经看过Pandas,我相信这会使这项任务更容易,但不幸的是,我无法安装外部库,这排除了这个选项。任何帮助都是非常感谢的。

编辑:基于Serge的回答,这里有一个解决方案,可以:

代码语言:javascript
复制
ins1 = open( "file1.xlsx", "r" )
ins2 = open( "file2.xlsx", "r" )
outs = open("output.xlsx",'wb')
for line in ins1:
    line = line.rstrip() + "\t" + next(ins2)
    print line.rstrip()
    outs.write(line)
ins1.close()
ins2.close()
outs.close()  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-01 14:49:54

假设所有文件都以csv格式与空格分隔,下面的简化代码就足够了:

代码语言:javascript
复制
with open( "file1.xlsx", "r" ) as ins1, open( "file2.xlsx", "r" ) as ins2, \
        open("output.xlsx",'wb') as resultfile :
    for line in ins1:
        line = line.rstrip() + " " + next(ins2)
        print line.rstrip()
        resultfile.write(line)

说明:

  • with确保文件无论在代码中发生什么都被正确关闭。
  • 以上代码逐行处理文件,假设file1和file2对齐
  • 代码简单地从file1中移除行尾,从file2移除一行空格和行,并将结果写入output
  • 打印行中的r条避免了额外的新行。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27228552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档