-
python怎么读取excel每一行的图片-Python读取excel中的图片完美解决方法
2020-10-30 00:13:45网上找了一种很聪明的方法,原理是这样的:1、将待读取的excel文件后缀名改成zip,变成压缩文件。2、再解压这个文件。3、在解压后的文件夹中,就有excel中的图片。4、这样读excel中的图片,就变成了读文件夹中的图片...excel中有图片是很常见的,但是通过python读取excel中的图片没有很好的解决办法。
网上找了一种很聪明的方法,原理是这样的:
1、将待读取的excel文件后缀名改成zip,变成压缩文件。
2、再解压这个文件。
3、在解压后的文件夹中,就有excel中的图片。
4、这样读excel中的图片,就变成了读文件夹中的图片了,和普通文件一样,可以做各种处理。
解压后的压缩包如下:
python脚本如下:
'''
File Name: readexcelimg
Author: tim
Date: 2018/7/26 19:52
Description: 读取excel中的图片,打印图片路径
先将excel转换成zip包,解压zip包,包下面有文件夹存放了图片,读取这个图片
'''
import os
import zipfile
# 判断是否是文件和判断文件是否存在
def isfile_exist(file_path):
if not os.path.isfile(file_path):
print("It's not a file or no such file exist ! %s" % file_path)
return False
else:
return True
# 修改指定目录下的文件类型名,将excel后缀名修改为.zip
def change_file_name(file_path, new_type='.zip'):
if not isfile_exist(file_path):
return ''
extend = os.path.splitext(file_path)[1] # 获取文件拓展名
if extend != '.xlsx' and extend != '.xls':
print("It's not a excel file! %s" % file_path)
return False
file_name = os.path.basename(file_path) # 获取文件名
new_name = str(file_name.split('.')[0]) + new_type # 新的文件名,命名为:xxx.zip
dir_path = os.path.dirname(file_path) # 获取文件所在目录
new_path = os.path.join(dir_path, new_name) # 新的文件路径
if os.path.exists(new_path):
os.remove(new_path)
os.rename(file_path, new_path) # 保存新文件,旧文件会替换掉
return new_path # 返回新的文件路径,压缩包
# 解压文件
def unzip_file(zipfile_path):
if not isfile_exist(zipfile_path):
return False
if os.path.splitext(zipfile_path)[1] != '.zip':
print("It's not a zip file! %s" % zipfile_path)
return False
file_zip = zipfile.ZipFile(zipfile_path, 'r')
file_name = os.path.basename(zipfile_path) # 获取文件名
zipdir = os.path.join(os.path.dirname(zipfile_path), str(file_name.split('.')[0])) # 获取文件所在目录
for files in file_zip.namelist():
file_zip.extract(files, os.path.join(zipfile_path, zipdir)) # 解压到指定文件目录
file_zip.close()
return True
# 读取解压后的文件夹,打印图片路径
def read_img(zipfile_path):
if not isfile_exist(zipfile_path):
return False
dir_path = os.path.dirname(zipfile_path) # 获取文件所在目录
file_name = os.path.basename(zipfile_path) # 获取文件名
pic_dir = 'xl' + os.sep + 'media' # excel变成压缩包后,再解压,图片在media目录
pic_path = os.path.join(dir_path, str(file_name.split('.')[0]), pic_dir)
file_list = os.listdir(pic_path)
for file in file_list:
filepath = os.path.join(pic_path, file)
print(filepath)
# 组合各个函数
def compenent(excel_file_path):
zip_file_path = change_file_name(excel_file_path)
if zip_file_path != '':
if unzip_file(zip_file_path):
read_img(zip_file_path)
# main
if __name__ == '__main__':
compenent('/Users/Desktop/test/people.xlsx')
总结
以上所述是小编给大家介绍的Python读取excel中的图片完美解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
本文标题: Python读取excel中的图片完美解决方法
本文地址: http://www.cppcns.com/jiaoben/python/235730.html
-
产生和Excel一样的整型等差数列。
2015-02-07 20:47:21工作中遇到要在Excel中生成一个burning down chart,需要产生整型的等差数列作为工作完成的百分比,但是,如16列怎么生成一个等差数列呢(100- 0),这个算法在网上找不到啊。其实Excel能生成,但是看不到怎么生成的...工作中遇到要在Excel中生成一个burning down chart,需要产生整型的等差数列作为工作完成的百分比,但是,如16列(100除以16,不能整除)怎么生成一个等差数列呢(100- 0)?这个算法我在网上找不到啊。其实Excel能生成,但是看不到怎么生成的。于是自己编了一个。(如果大家找到,请告诉我)
下载地址:点击打开链接 http://download.csdn.net/detail/xuanyuanlei1020/8431841
欢迎下载!!!!(给我点分吧,都快不够使得啦)。如果嫌麻烦,下面可以复制粘贴!!
import java.util.ArrayList; import java.util.Collections; public class ArithmeticSequence { public static void main(String[] args) { /** * 100 50 0 则columnNum = 2; */ int columnNum = 16; ArrayList<Integer> arithmeticSequenceArr = getArithmeticSequence(columnNum); for (int i = 0; i <= columnNum; i++) { System.out.println("line:" + (i + 1) + " " + arithmeticSequenceArr.get(i)); if(i == columnNum) continue; } } private static ArrayList<Integer> getArithmeticSequence(int columnNum) { ArrayList<Integer> arr = new ArrayList<Integer>(); int remain = 100; int quotient = 100 / columnNum; int remainder = 100 % columnNum; System.out.println("quotient=" + quotient + " remainder=" + remainder); ArrayList<Integer> subtracterArr = new ArrayList<Integer>(); ArrayList<Integer> subtracterArrS = new ArrayList<Integer>();//small ArrayList<Integer> subtracterArrB = new ArrayList<Integer>();//big /** * 得到等差数列 */ for (int i = 0; i <= columnNum; i++) { arr.add(remain); if(i == columnNum) continue; remain -= remain / (columnNum - i); } System.out.println("arr.size()="+arr.size()); if(remainder != 0) { ArrayList<Integer> arr2 = new ArrayList<Integer>(); /** * 得到每一个减数,但是没有想到办法去将少的减数按一定规律去插到多的减数中去。 */ for (int i = 0; i < columnNum; i++) { int subtracter = arr.get(i) - arr.get(i + 1); System.out.println(i+1+" "+subtracter); subtracterArr.add(subtracter); } /** * */ int index = subtracterArr.indexOf(subtracterArr.get(0) + 1); System.out.println("index:" + index); /** * small one */ for (int i = 0; i < index; i++) { subtracterArrS.add(subtracterArr.get(i)); } /** * big one */ for (int i = index; i < subtracterArr.size(); i++) { subtracterArrB.add(subtracterArr.get(i)); } System.out.println("small arr size:"+subtracterArrS.size()+ "big arr size:"+subtracterArrB.size()); int times = 0; /** * the small subtracters is more than the big subtracters. */ if(index > columnNum / 2) { times = index / (columnNum - index); System.out.println("small times:"+times); int small = subtracterArrS.get(0); int big = subtracterArrB.get(0); while(!subtracterArrS.isEmpty() || !subtracterArrB.isEmpty()) { if(!subtracterArrB.isEmpty()) { arr2.add(big); subtracterArrB.remove(0); } for (int j = 0; j < times; j++) { if(!subtracterArrS.isEmpty()) { arr2.add(small); subtracterArrS.remove(0); } } } } else { times = (columnNum - index) / index; System.out.println("big times:"+times); int small = subtracterArrS.get(0); int big = subtracterArrB.get(0); while (!subtracterArrS.isEmpty() || !subtracterArrB.isEmpty()) { for (int j = 0; j < times; j++) { if(!subtracterArrB.isEmpty()) { arr2.add(big); subtracterArrB.remove(0); } } if(!subtracterArrS.isEmpty()) { arr2.add(small); subtracterArrS.remove(0); } } } remain = 100; arr.set(0, remain); for (int i = 0; i < arr2.size(); i++) { System.out.println("arr2:"+arr2.get(i)); remain -= arr2.get(i); arr.set(i + 1, remain); } } return arr; } }
好吧,就这么多。 -
python怎么连接excel_python连接excel,abauqus 二次开发
2020-12-10 14:59:58xlrdimport到程序中才能使用,就像我们在abaquspython脚本中常见的一样1.fromabaqusimport*2.fromabaqusConstantsimport*3.fromcaeModulesimport*复制代码但是如果偶们在abaqus中写python脚本建模时要用到excel中的...xlrd import
到程序中才能使用,
就像我们在
abaqus
python
脚本中常见的一
样
1.
from abaqus import *
2.
from abaqusConstants import *
3.
from
c
aeModules import *
复制代码
但是如果偶们在
abaqus
中写
python
脚本建模时要用到
ex
c
el
中的模型相关数据,
必然也会想到
import
这两
个包
但是这时候就会发现,系统找不到这两个包。
。
。
[atta
c
h]287781[/atta
c
h]
原因在于
abaqus
解释编译
python
脚本时候用的是自己的带的
python
,而不是我们装的那个。所以就需要
我们
把那两个包安装的文件手动导入到
abaqus
自带的
python
目录下。下面以
xlrd
(读取
ex
c
el
的包)为例来讲
讲怎
么实现在
abaqus
中使用
python
连接
ex
c
el
。
(那个
xlrt
是用
python
写入数据到
ex
c
el
文件里面用的)
首先,找到你
xlrd
安装的目录,比如我的就在
C:\Python27
下面。你应该可以发现一个叫做
xlrd-wininst.log
的安
装日志文件,打开内容差不多如下:
*** Installation started 2011/04/09 21:17 ***
Sour
c
e: D:\Ba
c
kup\
我的文档
\
下载
\xlrd-0.7.1.win32.exe
999 Root Key: HKEY_LOCAL_MACHINE
020 Reg DB Key: [Software\Mi
c
rosoft\Windows\CurrentVersion\Uninstall]xlrd-py2.7
040 Reg DB Value: [Software\Mi
c
rosoft\Windows\CurrentVersion\Uninstall\xlrd-py2.7]DisplayName=Python 2.7
xlrd-0.7.1
040
Reg
DB
Value:
[Software\Mi
c
rosoft\Windows\CurrentVersion\Uninstall\xlrd-py2.7]UninstallString="C:\Python27\Removexlrd.ex
e" -u "C:\Python27\xlrd-wininst.log"
200 File Copy: C:\Python27\Lib\site-pa
c
kages\xlrd-0.7.1-py2.5.egg-info
100 Made Dir: C:\Python27\Lib\site-pa
c
kages\xlrd
-
excel的使用
2012-11-25 17:06:01存放数据格式为“x,y”的形式,首先在Excel中输入坐标值,将x坐标值放入A列,y坐标值放入到B列,然后利用“&”将A列和B列合并成C列,在C1中输入:=A1&","&B1;,此时C1中的数据形式就符合要求了,再用鼠标向下拖动... -
excel数据平均分配给多人_excel表格数据分配-用Excel怎么才能将组数据平均分配给几个人...
2020-12-31 12:26:14在表格右侧找一空做序号,1、2、3、4、5、6、7、8、9、10。再继续做1、2、3.....8、9、10,......一直做满全表3000个。每人对应一个号。表格按新作的序号,排序,就会有300人是1,有300人是2......分别把对应1、2、3....如何用EXCEL快速分配数据?
表格按排序,年龄就按大小排列一样的年龄就一起了。
在表格右侧找一空做序号,1、2、3、4、5、6、7、8、9、10。再继续做1、2、3.....8、9、10,......一直做满全表3000个。每人对应一个号。
表格按新作的序号,排序,就会有300人是1,有300人是2......分别把对应1、2、3.....9、10号的人名分给10个人,每个人分到的年龄就差不多了。
excel怎么按人数比例分配
表格按排序,年龄就按大小排列一样的年龄就一起了。
在表格右侧找一空做序号,1、2、3、4、5、6、7、8、9、10。再继续做1、2、3.....8、9、10,......一直做满全表3000个。每人对应一个号。
表格按新作的序号,排序,就会有300人是1,有300人是2......分别把对应1、2、3.....9、10号的人名分给10个人,每个人分到的年龄就差不多了。
如何将EXCEL中的数据平均分成若干份?
1、在电脑中要编辑的excel表格
2、打开带有数据的那格,在另外一个表格开要自动对应结果据。如图
3、打开要对应的内容,如图,要通过人名自动同步对应的绩效考核结果,确定了思路就可以进行下一步的操作了
4、在excel表格的上方找到 “公式” 菜单,打开公式菜单:在接下来找到 “插入函数”,通过这种方式找到的函数引用比较容易理解
5、打开插入函数,会跳出来一个插入函数的“使用向导”,这时候需要点击如图所示的向导对话框的下拉的“三角形的按钮”,这里会显示要使用的函数的类型
6、在“选择函数类型”的下拉菜单里面找到“查找引用函数”
7、并在这里找到"vlookup函数“,点击"确定"。如图所示
8、插入函数的第一个参数,就是需要在“数据表首列”需要“搜索的值”,也就是“引用的数据”
9、输入包含“引用数据”和“结果数据”所在的区域,把鼠标光标放到第二栏,输入数据所在的区域
10、最后一个参数就是确定数据的匹配是“精确匹配”还是“模糊匹配”,这里是要找到指定人的绩效工资,一对一的,所以要用精确
11、用填充饼向下拖动,拖动到等列充满,这时候就可以直接在A列输入人名自动对应数据了。就可以用EXCEL快速分配数据了。
用Excel怎么才能将组数据平均分配给几个人
Excel怎么快速分析数据?这个视频告诉你!
excel表格怎么把数据分开
最简单的是添加两个辅助列,然后用vlookup函数去做搜索,你这个需求提的不太完整,比如黄色是不是必定比蓝色的多,不会有分配不完的情况;对分配的顺序有没有要求等等,补充下吧
-
easyui怎么设置表格里面的开关按钮_Excel文档有太多工作表,教你做表格目录,快速搞定!...
2020-12-28 01:10:05因工作需要,我们会在一个Excel文档里面创建很多个sheet工作表,不过接下来你就会碰到一个问题,你想要查找某个工作表就会变得很麻烦,如果一个表一个表找过去,那效率真的太低了。那有什么好办法吗?当然有!我们... -
wps控件属性怎么用_wps中设置数值调节框,你还找不到吗?让你的日历动起来
2021-01-07 01:11:04好不容易做好了公司2020年的日历,想要设置一下更改时间的动态调节框,在wps开发工具下插入了一...实际上这个和我们的excel中也是类似的,只不过在excel中都是在开发工具下,一个是表单控件(数值调节框),一个是数值... -
JXL读取Excel精度问题
2015-05-11 14:53:21在根据得到的值来转换为各种类型,但是我有几个表格中的数据值是小数点后五位,怎么取都得到的是三位小数,网上找了一下资料说,excel的表格设置为文本框,还是一样的效果,没办法就看了下jxl这个以部 -
如何在asp.net中将office文档文件(doc,excel,ppt,txt等)转成FLASH可以显示的swf格式
2010-12-16 16:39:00如题,这两天在网上也...网上百度了一下,很多都说是权限的问题,但是我根据他们说的,怎么调权限都没有成功,这让我很失望,而且我想现在很多人和我遇到的问题一样吧,还就是找不到真正能解决问题的答案。<br / -
微信内置浏览器导出Excel表格功能
2018-07-30 18:04:42唉,,,折腾了一天,从网上各种找资料,但是给的解决方案都不是我想要的(也不知道谁复制的谁的,基本都一样)。 在快下班的时候,我请教了一位朋友,我问他是怎么解决的,他说:很简单,发邮件就可以了。 为方便... -
word文档打对勾_word里怎么输入“对勾”?今天总算清楚了!简单又好记,涨知识!...
2021-01-17 17:43:18有时候是在word里,有时候是excel,每次都要上网查一下,因为方法有点麻烦,根本记不住。不同软件操作方法还不一样,有的是改字体,有的是插入特殊符号,有的用快捷键。下面小编总结一下,怎么输入“对勾”简单又好... -
64位win7 安装access2010(64位),WPS不能使用数据导入功能,提示未安装数据库引擎,求解决方法?
2019-03-21 18:51:19系统win7升级位64后,重新安装了access2010(64位)和excel(64位)还有wps2016个人版,可以在access里打开外部的excel文件,也能导入,但是不可以像之前一样的access和wps文件互相打开和导入数据,错误提示如下:... -
数据科学 第 3 章 10 数据透视表
2018-11-12 10:06:10连接数据库jili表,jili这几个太难打了,下文用df代表激励数据(代码省略)之前在excel中用烂了的透视表,终于用python来实现了,其实主要是讲pivot_table里面的参数怎么使用,但书中讲的不是详细,还是要自己找一些... -
4.视频的【16:44】开始是使用easyuefi创建efi引导,这一步前面都跟他视频一样,他怎么点你就怎么点,只不过,选择引导文件为:EFI/BOOT/BOOTx64.efi ⭐️如果你不会安装,需要安装服务,联系微信ske1996 可提供收费...
-
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件 DBX:DataBearn图像;Microsoft Visual FoxPro表格文件 DCT:Microsoft Visual FoxPro数据库容器 DCU:Delphi编译单元文件 DCX:Microsoft Visual... -
arcgis工具
2012-10-22 22:37:31在做外联如EXCEL等的时候对数据有一些要求,确保第一行包含字段名,这些字段名不能超过十个字母,不能出现特殊字符。最好把EXCEL保存为.csv文件去除一些不兼容的内容再连接。 转载ESRI论坛Lucy1114帖子说明: 12... -
ExtAspNet_v2.3.2_dll
2010-09-29 14:37:08-增加示例-如何将Grid控件导出为Excel(data\grid_excel_run.aspx)(feedback:503684912)。 -如果TreeNode的属性Enabled="false",则此项变灰并且不会被选中(feedback:your568)。 -修正TreeNode的属性NavigateUrl不... -
ExtAspNet v2.2.1 (2009-4-1) 值得一看
2010-04-01 09:41:27-增加示例-如何将Grid控件导出为Excel(data\grid_excel_run.aspx)(feedback:503684912)。 -如果TreeNode的属性Enabled="false",则此项变灰并且不会被选中(feedback:your568)。 -修正TreeNode的属性NavigateUrl不... -
vc++ 应用源码包_1
2012-09-15 14:22:12知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成... -
vc++ 应用源码包_6
2012-09-15 14:59:46知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成... -
vc++ 应用源码包_2
2012-09-15 14:27:40知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成... -
vc++ 应用源码包_5
2012-09-15 14:45:16知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成... -
vc++ 应用源码包_4
2012-09-15 14:38:35知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成... -
vc++ 应用源码包_3
2012-09-15 14:33:15知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成...
-
ML 方案 .pdf
-
Tecplot 360 EX 2020 Release 2 User's Manual 用户手册
-
hexo博客搭建
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
spring源码学习(二)不得不学的IoC容器的初始化过程
-
基于fpga的verilog语言的83编码器
-
数据库面试题【十六、优化长难的查询语句】
-
数据库面试题【十四、主键使用自增ID还是UUID】
-
MATLAB:图像半色调技术简介
-
基于springboot实现表单重复提交.docx
-
全球编程大赛作品,拍摄月亮 3.98K.rar
-
Hi3516CV500╱Hi3516DV300 SDK 安装及升级使用说明.pdf
-
LL(1),LR(0),SLR(1)文法分析器
-
【Python-随到随学】FLask第二周
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
Element UI —— el-form 自定义验证规则
-
MySQL 四类管理日志(详解及高阶配置)
-
stm32库移植样例程序.rar
-
混合动力系列轿车出厂检验规范.docx
-
MHA 高可用 MySQL 架构与 Altas 读写分离