您的位置:首页 > 编程语言 > Python开发

python从电子表格随机取出一行数据,并添加一次操作记录。

2019-05-22 17:38 225 查看

import xlwt
import xlrd
from xlutils.copy import copy
import random
import openpyxl

#下面为从xls文件读取数据,写入读取记录
def xls_words():
   #fn=u'D:/2018熊/伊学专栏/背单词方法/初一单词.xlsx' #两种文件xlrd都可以读,xlwt只能写xls
   fn='C:/Users/Administrator/Desktop/sms/1234.xls'
   xls=xlrd.open_workbook(filename=fn)#打开电子表格文件
   sheet1=xls.sheet_by_index(0)#打开第一个sheet
   n=sheet1.nrows#取出总行数
   a=sheet1.row_values(0)[0]#xlrd库从0,0开始取值
   print(a)
   ##sheet1.put_cell(2,4,2,a+1,0)#不能写加文件
   #写操作
   xls_copy=copy(xls)
   sheet_w=xls_copy.get_sheet(0)
   words=''
   for r in random.sample(range(1,n-1),30):#不重复随机数
      #r=random.randint(1,n-1) #产生随机数,第0行标题,末行n-1
      words+=sheet1.row_values(r)[0]+'\t'+sheet1.row_values(r)[1]+'\n'
      record=sheet1.row_values(r)[2]
      sheet_w.write(r,2,record+1)
   xls_copy.save(fn)   
   print(words) 

#下面为从xlsx电子表格随机取出一行数据,并添加一次操作记录。
def xlsx_words():
   #fn=u'D:/2018熊/伊学专栏/背单词方法/初一单词.xlsx'
   fn='C:/Users/Administrator/Desktop/sms/12345.xlsx'
   #xls=xlrd.open_workbook(filename=fn)#打开电子表格文件
   #sheet1=xls.sheet_by_index(0)#打开第一个sheet
   #n=sheet1.nrows
   xlsx=openpyxl.load_workbook(fn)#打开xlsx文件
   sheet1=xlsx.worksheets[0]#打开第一个sheet
   n=sheet1.max_row#读取总行数
   words=''
   for r in random.sample(range(2,n),30):#sample 没有重复数
      #r=random.randint(2,n)#产生随机数,第一行标题
      #words+=sheet1.row_values(r)[0]+'\t'+sheet1.row_values(r)[1]+'\t'\
      #+sheet1.row_values(r)[2]+'\t'+sheet1.row_values(r)[3]+'\n'
      words+=sheet1.cell(r,1).value+'\t'+sheet1.cell(r,2).value+'\t'\
         +sheet1.cell(r,3).value+'\t'+sheet1.cell(r,4).value+'\n'
      record=sheet1.cell(r,5).value #openpyxl库从1,1开始。注意
      sheet1.cell(r,5).value=record+1
   xlsx.save(fn)   
   #return words

xls_words()
xlsx_words()

#import openpyxl
###这个openpyxl不支持xls,么家伙
##xlsx=openpyxl.load_workbook(fn)
##sheet1=xlsx.worksheets[0]
##n=sheet1.max_row
###取出一行的值很麻烦,生成器
##a=sheet1.rows#所有行<class 'generator'>
##b=list(a)#转为列表
##c=b[2]#元组类型#取出第几行
###不能直接取出,需要下面迭代
##for i in c:
##    print(i.value)
##a=sheet1.cell(2,5).value #openpyxl库从1,1开始。注意
##print(type(a))
##sheet1.cell(2,5).value=a+1
##xlsx.save(fn)
 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: