首页 新闻 会员 周边

Python怎么读取Excel的行数和列数?

0
[已解决问题] 解决于 2018-09-11 14:39

在把数据写入Excel的过程中遇到了问题,写入的数据是for循环进去的,所以是分多次写入(每次for循环写入一次,一次有几十条数据)。
但是在第二次for循环写数据时,就会覆盖掉第一次写的数据,就是后一次写入的数据会覆盖掉之前写的,代码片段:

 1 book = xlwt.Workbook(encoding='utf-8',style_compression=0) #创建文件
 2     sheet = book.add_sheet('sheet1',cell_overwrite_ok=True) #指定sheet表名称
 3     h = 1  # 行号
 4     for con in cons:
 5         l = 0  # 列号
 6         for num in range(0,13): #下标和列号是相同的,毕竟你要写几个数据就要几列
 7             sheet.write(h,l,con[num])
 8             l += 1 #列要加一
 9         # print('已写入 %s' % str(cons))
10         h += 1 #一个数据写完之后,要换行了,行号加一
11         # l = 0 #但是列还得从0开始,从A列开始
12         book.save('%s.xls' % str(con[0] + '(' + con[1] + ')')) #保存文件

后来想了下,每次for循环的时候行号都是1...(好像是吧)所以就直接覆盖了。
我想的解决方法是获取当前Excel的行数,然后写入的时候就从行数+1开始写数据,这样就不会覆盖掉,但是网上查了一些资料,获取行号好像Python3不能用?nrows并不行...
或者还有其它好的解决方法,pandas...help me

会发光的主页 会发光 | 菜鸟二级 | 园豆:258
提问于:2018-08-26 09:36
< >
分享
最佳答案
0

兄弟,我给你个util直接用就行了,私信加我!!!

@会发光: python你想写完一条数据后保存,想直接读取当前sheet页是不能的你要重新open一下后读;他的本质是1.读数据,2.写数据3.修改数据.  其中修改数据最为特殊!!!他是把当前sheet页copy下来后再此基础上进行操作,说以你想写入一条数据后想获取当前页已有数据 ,就要重新open读取一下

奖励园豆:5
DanBrown | 小虾三级 |园豆:1321 | 2018-08-27 17:23

我又设想了一种:

有一个函数专门用来创建Excel表格,一个函数专门读取表格的行数,一个函数专门写数据....不知道可行,明天测下,不行再辛苦发个案例学习下:)

会发光 | 园豆:258 (菜鸟二级) | 2018-08-27 18:14
其他回答(2)
0

看不懂你这个,
你可以试试csv方法。
直接将数据按行的形式写入csv文件(而不用for循环)

vlj | 园豆:202 (菜鸟二级) | 2018-08-26 11:34

需要Excel格式的....

支持(0) 反对(0) 会发光 | 园豆:258 (菜鸟二级) | 2018-08-26 13:43

@会发光:Excel表格可以支持很多格式,你说是xlsx格式。Excel也可以支持.csv格式。
你用csv方法得到表格

支持(0) 反对(0) vlj | 园豆:202 (菜鸟二级) | 2018-08-26 14:56
1

用pandas吧  下面供参考

import pandas as pd

def get_and_write_file(search_word, start_time, end_time,pages):
    startTime_ = datetime.datetime.strptime(start_time, '%Y-%m-%d')
    endTime_ = datetime.datetime.strptime(end_time, '%Y-%m-%d')
    while startTime_ <= endTime_:
        startTime = startTime_.strftime('%Y-%m-%d')
        endTime = startTime
        startTime_ += datetime.timedelta(days=1)
        print('++++++++++++++' + startTime + '+++++++++++++')
        for page in range(1,pages+1):
            print('---------第' + str(page) + '页--------')
            try:
                get_write_one_page(search_word, startTime, endTime, page)
            except Exception as e:
                if e == 'data':
                    break
                try:
                    qingbo = Qingbo()
                    qingbo.login_in()
                    time.sleep(3)
                    get_write_one_page(search_word, startTime, endTime, page)
                except Exception as e:
                    print(e)
                    break
            time.sleep(3)
            #to_excel(out_file)
def to_excel(file_path):
    big_df = pd.read_csv(file_path, sep='$', header=None, engine='python', encoding='utf8')
    big_df.columns = ['公众号', '文章名', '阅读量', '点赞数', '日期']
    big_df.to_excel(file_path.rsplit('.', 1)[0] + '.xlsx', index=False, encoding='utf8')
ycyzharry | 园豆:25651 (高人七级) | 2018-08-27 10:35

还是会覆盖掉,到最后保存的文件,只剩一条记录了。

支持(0) 反对(0) 会发光 | 园豆:258 (菜鸟二级) | 2018-08-27 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册