找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 5466|回复: 6

[求助] 关于用openpyxl读取xlsx文件写入txt文件出错

2

主题

10

帖子

10

积分

贫民

积分
10
dph233 发表于 2017-12-2 10:16:27 | 显示全部楼层 |阅读模式
1威望
  1. from openpyxl import load_workbook
  2. f=open('储存路径','w',encoding='utf-8')
  3. wb = load_workbook('原始xlsx文件路径')
  4. sheet = wb.get_sheet_by_name('指定sheet名')
  5. num=0
  6. for cell in list(sheet.columns)[指定列数]:
  7.     num+=1
  8.     print(str(num)+cell.value)
  9.     f.write(str(cell.value)+'\n')
  10. f.close
复制代码
2017-12-02_101354.jpg
print出的结果是完整的
2017-12-02_101153.jpg
但是写入txt的就少了后面的一小部分
2017-12-02_101203.jpg
换了另外一个xlsx文件同样出现缺失.
请问大家是代码哪里出了问题吗?或者说有什么别的方法实现目的?


最佳答案

查看完整内容

写入的缓存达到上限造成写入丢失 f.write(str(cell.value)+'\n')后面跟一句f.flush()即可,每缓存一行就写入一行并清空,而不是等都缓存后再写入。 最后一句f.close是个函数你的意思是调用这个函数所以是f.close()
回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-2 10:16:28 | 显示全部楼层
写入的缓存达到上限造成写入丢失
f.write(str(cell.value)+'\n')后面跟一句f.flush()即可,每缓存一行就写入一行并清空,而不是等都缓存后再写入。
最后一句f.close是个函数你的意思是调用这个函数所以是f.close()
回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2017-12-2 15:48:37 | 显示全部楼层
lz,excel文件传上来。
回复

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
dph233  楼主| 发表于 2017-12-4 09:15:35 | 显示全部楼层
文件在这边

素媛.xlsx

157.12 KB, 下载次数: 3

回复

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
dph233  楼主| 发表于 2017-12-4 09:16:04 | 显示全部楼层
sheeboard 发表于 2017-12-2 15:48
lz,excel文件传上来。

文件已上传
回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2017-12-4 09:53:14 | 显示全部楼层
import pandas as pd
pd.read_excel=('素媛.xlsx',sheetname='好评')
commont=df['评论内容']
如果索引要从1开始
commont.index+=1
commont.to_csv('评论内容.txt',header=None,mode='a')

结果

结果
回复

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
dph233  楼主| 发表于 2017-12-4 22:00:04 | 显示全部楼层
  1. import pandas as pd
  2. f=open('素媛好评内容.txt',"w+",encoding='utf-8')
  3. #使用pandas读取excel文件
  4. xls_file=pd.ExcelFile('素媛.xlsx')
  5. xls_file.sheet_names#显示出读入excel文件中的表名字
  6. table1=xls_file.parse('好评')
  7. mes=table1.评论内容
  8. for i in mes:
  9.     print(i)
  10.     f.write(str(i))
  11. f.close()
复制代码

试了用pandas也可以~不过不知道为什么楼上给的方法我出错了(还是很谢谢)...在网上找了下pandas的教程改了下成功了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表