# -*- coding:utf-8 _*-

"""

@author:Administrator

@file: excel.py

Description :

如果行数是1000的倍数,进行一次flush,如果行数超过65536,

新开一个sheet,如果超过3个sheet,则新建一个文件

@time: 2018/10/31

"""

import os

import xlwt

from xlrd import open_workbook

from xlutils.copy import copy

from configs.config import ConfigENum

MAX_ROW_NUM = 65536

MAX_SHEET_NUM = 3

class XLS:

def __init__(self, name, captionlist: list, typelist: list, encoding='utf8', flushBound=1000):

"""

:type captionlist: list

:type typelist: list

"""

self.name = name

self.captionlist = captionlist[:]

self.typeList = typelist[:]

self.encoding = encoding

self.flushBound = flushBound

self.bk = xlwt.Workbook(encoding=self.encoding, style_compression=0)

self.workbookIndex = 1

self.row = 0

self.excel_name = None

self.sheet = None

self.sheetindex = 0

# self._add_sheet()

def _add_sheet(self):

if self.sheetindex != 0:

# This method is used to save the Workbook to a file in native Excel format.

self.bk.save(self.name + str(self.sheetindex) + ".xls")

# create new workbook

if self.sheetindex > MAX_SHEET_NUM:

self.workbookIndex += 1

self.bk = xlwt.Workbook(encoding=self.encoding, style_compression=0)

self.sheetindex = 1

# a new sheet

index=self.sheetindex

print("self.sheet_index=",index)

self.sheet = self.bk.add_sheet(self.name +

index.__str__(),

cell_overwrite_ok=False)

for i in range(len(self.captionlist)):

# This method is used to write a cell to a :class:`Worksheet`

self.sheet.write(0, i, self.captionlist[i])

self.row = 1

def write(self, data: list):

"""

:type data: list

"""

# The row of current sheet > the max rows of sheet then create a new sheet

if self.row > MAX_ROW_NUM:

self.sheetindex += 1

self._add_sheet()

self._add_sheet()

for i in data:

for j in range(len(i)):

if self.typeList[j] == "num":

try:

self.sheet.write(self.row, j, float(i[j]))

except:

raise ValueError("{} is not a number".format(i[j]))

else:

self.sheet.write(self.row, j, i[j])

# when rows =1000 then flush rows

if self.row % self.flushBound == 0:

self.sheet.flush_row_data()

self.row += 1

@staticmethod

def __find_file(keyword):

for root, d, files in os.walk(ConfigENum.DATA_PATH.value):

for file in files:

if keyword in file:

file = os.path.join(root, file)

return file

return False

def add_write(self, datas):

result=self.__find_file(self.name)

if not result:

self.write(datas)

self.save()

return "ok"

if self.row > MAX_ROW_NUM:

self.sheetindex += 1

self._add_sheet()

# read a excel file

self.bk = open_workbook(result)

# get the rows of sheet

rows = self.bk.sheets()[self.sheetindex].nrows

# Copy an :class:`xlrd.Book` into an :class:`xlwt.Workbook`

excel = copy(self.bk)

self.sheet = excel.get_sheet(self.sheetindex)

self.row = rows

for data in datas:

# [1,2,3,4]

for j in range(len(data)):

self.sheet.write(self.row, j, data[j]) # xlwt对象的写方法,参数分别是行、列、值

if self.row % self.flushBound == 0:

self.sheet.flush_row_data()

self.row += 1

self.excel_name = os.path.join(ConfigENum.DATA_PATH.value,

self.name + self.workbookIndex.__str__() + ".xls")

excel.save(self.excel_name)

def save(self):

self.excel_name = os.path.join(ConfigENum.DATA_PATH.value,

self.name + self.workbookIndex.__str__() + ".xls")

self.bk.save(self.excel_name)

# if __name__ == "__main__":

# caption_list = ["name", "gender", "age"]

# type_list = ["str", "str", "num"]

# input_data = ["Lili", "M", 25]

# excl=XLS("test",caption_list,type_list)

# excl.write(input_data)

# excl.save()

python3读取、写入、追加写入excel文件

由于excel版本不同,python处理的时候选择的库页不同. 一.操作对应版本表格需要用到的库 1.操作xls格式的表格文件,需要用到的库如下: 读取:xlrd 写入:xlwt 修改(追加写入):x ...

php写入、追加写入文件的实例

$myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $t ...

Python 操作Excel之通过xlutils实现在保留原格式的情况下追加写入数据

在Python操作Excel 的模块有 xlrd.xlwt.xlutils等. xlrd:读取Excel文件数据 xlwt:写入Excel 数据,缺点是Excel格式无法复用,为了方便用户,写入的话, ...

JS+Selenium+excel追加写入,使用python成功爬取京东任何商品~

之前一直是requests库做爬虫,这次尝试下使用selenium做爬虫,效率不高,但是却没有限制,文章是分别结合大牛的selenium爬虫以及excel追加写入操作而成,还有待优化,打算爬取更多信息 ...

Python Excel 多sheet 多条数据 自定义写入

pip install xlwt python excel 数据写入操作,处理网站数据导出以及不是太多数据的爬虫存储, 用处蛮多的轮子. (150+++++++++++++++++++++++++++ ...

python:创建文件夹:写入文本1:读取txt:读取Excel文件遍历文件夹:

https://blog.csdn.net/u011956147/article/details/80369731 创建文件夹: import osimport shutil def buildfil ...

解决python中csv文件中文写入问题

一.前言 一般来说,为了方便,使用python的时候都会使用csv模块去写数据到csv文件,但是写入中文的时候,经常会报错: UnicodeEncodeError: 'ascii' codec can ...

Java基础知识强化之IO流笔记20:FileOutputStream写出数据实现换行和追加写入

1.  如何实现数据的换行? (1) package com.himi.fileoutputstream; import java.io.FileNotFoundException; import j ...

ObjectOutputStream 追加写入读取错误 - 自己的实现方案

本篇博客灵感来自http://blog.csdn.net/chenssy/article/details/13170015 问题描述.问题出现的原因.尝试解决办法,请参见鄙人上一编博客. 上一编文章解 ...

随机推荐

【JavaScript】innerHTML、innerText和outerHTML的用法区别

用法:

test1 tes ...

51单片机对无线模块nRF24L01简单的控制收发程序

它的一些物理特性如工作频段.供电电压.数据传输速率就不详细介绍了,直接上代码. 1.首先是发送端: // Define SPI pins #include #defin ...

Axis2 WebService(基于REST风格)

http://www.lifeba.org/arch/java_axis2_webservice_rest.html Axis2除了提供传统的webservice方法外,还提供了对Rest的支持.Ax ...

editplus如何设置不自动备份

依次选择:工具,参数设置,文件(默认展开的,要缩回),然后看右边“保存文件时创建备份”,前面的框不要打勾,应用,确定

洛谷 P1316 丢瓶盖

P1316 丢瓶盖 题目描述 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以 ...

Eclipse快捷键集结

Debug快捷键 F5单步调试进入函数内部.   F6单步调试不进入函数内部,如果装了金山词霸2006则要把“取词开关”的快捷键改成其他的.   F7由函数内部返回到调用处.   F8一直执行到下一个 ...

SQLSERVER2008 错误18456

我遇到的问题,已经解决,如果你遇到不能解决可以咨询我 1.以windows验证模式进入数据库管理器. 第二步:右击sa,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密 ...

Quartz动态改变任务时间

基于quartz-2.2 的动态任务调度 Quartz是一个完全由java编写的开源作业调度框架. 调度器 Quartz框架的核心是调度器.调度器负责管理Quartz应用运行时环境.调度器不是靠自己做 ...

【源码】otter工程结构

最近在搞数据同步相关的内容,需要对otter的代码进行扩展,所以需要先熟悉一下otter的源码.首先我们整体来看下otter的工程结构.otter的工程结构比较复杂,需要花费一定的时间来理解各个部分的 ...

Linux系统运维笔记(三),设置IP和DNS

Linux系统运维笔记(三),设置IP和DNS 手工配置静态的IP地址 也就是手工配置IP地址.子网掩码.网关和DNS. vi /etc/sysconfig/network-scripts/ifcfg ...

python xlwt追加_python excel写入及追加写入相关推荐

  1. Python xlwt,xlrd对Excel表求笛卡尔积

    Python xlwt,xlrd对Excel表求笛卡尔积 应用背景 待处理的Excel表单模版 处理后导出的Excel效果 具体代码实现 应用背景 前些日子,在项目中遇到多级分类合并问题,每一级分类格 ...

  2. python xlwt模块生成excel文件并写入数据 xlrd读取数据

    python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...

  3. python工程师工资条_python + excel工资条自动生成

    原博文 2020-01-22 16:26 − 年终绩效分配结果出来了,领导要求每人要清楚地知道自己的情况.要求:总绩效和各分类都要清楚.这就表示我们要给每人六个纸条,一个总的,五个分的.打出来,裁开, ...

  4. python open 追加_Python创建文件和追加文件内容实例

    一.用Python创建一个新文件,内容是从0到9的整数, 每个数字占一行: #python >>>f=open('f.txt','w') # r只读,w可写,a追加 >> ...

  5. python xlsx读写_Python Excel文件的读写操作(xlwt xlrd xlsxwriter)

    Python语法简洁清晰,作为工作中常用的开发语言还是很强大的(废话). python关于Excel的操作提供了xlwt和xlrd两个的包作为针对Excel通用操作的支持,跨平台(Mac.Window ...

  6. python xlwt图表_python自动化办公(3)——Excel一键创建图表

    一些做运营的小伙伴可能经常要在工作中制作非常多的图表,如果能够在不打开Excel文件的情况下就能一键生成想要的图表,是不是相当的节省时间呢? 今天我们就来学习如何用python快速创建图表,我们需要用 ...

  7. python mysql 内存_Python将系统内存使用量写入mysql数据库

    1.前提创建数据库和表格式 [root@python ~]# mysql -uroot -pcentos mysql> create database memory; mysql> use ...

  8. python日历图_Python+Excel制作精美壁纸日历,任意DIY

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于Python实用宝典 ,作者Python实用宝典 给自己10分钟( ...

  9. python假设检验平均_Python|Excel|SPSS|R|Stata|Eviews统计数据假设检验T|F|卡方检验

    拍价即为成交价,不按数据量.任务量收费,价格透明,不用询价,节省时间 现在不说专业高效这些话,相信我的认真负责能够赢得您的认可 使用各种统计数据分析软件提供数据分析服务,包含数据整理.处理.清洗.挖掘 ...

  10. python xlwt写入excel_python xlwt模块生成excel文件并写入数据 xlrd读取数据

    python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...

最新文章

  1. C语言visual studio警告:取消对NULL指针“p”的引用
  2. Java 中long类型转换成为int类型时可能会出错的地方
  3. 在windows下查看SQLite数据库
  4. java学习笔记(3)——面向对象
  5. JVM因“ OutOfMemory”错误而关闭-我该怎么办?
  6. python3-numpy数组创建的几种方法
  7. AndroidStudio安卓原生开发_android按钮防止短时间内连续点击_在android_java中都能使用---Android原生开发工作笔记131
  8. python 线程锁_Python多线程-线程锁
  9. 为什么屠呦呦获得了诺贝尔奖却没被评上中科院院士?...
  10. linux 解压 7z 乱码,7z-linux下解决中文名乱码的终极办法
  11. Ubuntu 搜狗输入法崩溃
  12. perl hash输出类似HASH(0x26caf78)
  13. 防热服的设计数学建模_数学建模之高温作业专用服装设计.pdf
  14. 使用FlyMCU往STM32中烧写程序
  15. 文件系统系列之一:fat文件系统的结构分析
  16. 湿敏电阻HR202L使用记录
  17. Hdu4939 Stupid Tower Defense
  18. Springboot面试杀手锏-自动配置原理
  19. ubuntu 16.04 安装nvidia驱动 下载nvidia官方驱动
  20. 红烧牛肚的做法大全 红烧牛肚怎么做好吃

热门文章

  1. Wireshark 301: Spying on what people are downloading (Part 1 of 2)
  2. 海军领域搜狗细胞词库
  3. 什么是侧翼区(flanking region)和侧翼区单核苷酸多态性(Flanking SNPs)
  4. 增强型MOSFET导通条件
  5. iOS PDF 添加图片
  6. Easy ip 简单配置实验
  7. shell获取本机ip地址
  8. webrtc中GCC拥塞控制模块之码率控制器AimdRateControl
  9. nginx的网页压缩以及图片的压缩
  10. 毕业论文中的参考文献怎么引用?