900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python xlwt追加_python excel写入及追加写入

python xlwt追加_python excel写入及追加写入

时间:2020-03-05 06:23:44

相关推荐

python xlwt追加_python excel写入及追加写入

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

"""

@author:Administrator

@file: excel.py

Description :

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

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

@time: /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文件遍历文件夹:

/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 追加写入读取错误 - 自己的实现方案

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

随机推荐

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

用法:

test1tes ...

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

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

Axis2 WebService(基于REST风格)

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

editplus如何设置不自动备份

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

洛谷 P1316 丢瓶盖

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

Eclipse快捷键集结

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

SQLSERVER 错误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 ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。