精华内容
下载资源
问答
  • 网上了一种很聪明的方法,原理是这样的:1、将待读取的excel文件后缀名改成zip,变成压缩文件。2、再解压这个文件。3、解压后的文件夹中,就有excel中的图片。4、这样读excel中的图片,就变成了读文件夹中的图片...

    excel中有图片是很常见的,但是通过python读取excel中的图片没有很好的解决办法。

    网上找了一种很聪明的方法,原理是这样的:

    1、将待读取的excel文件后缀名改成zip,变成压缩文件。

    2、再解压这个文件。

    3、在解压后的文件夹中,就有excel中的图片。

    4、这样读excel中的图片,就变成了读文件夹中的图片了,和普通文件一样,可以做各种处理。

    解压后的压缩包如下:

    2018727100942032.png?201862710958

    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中生成一个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;
    	}
    }
    

    好吧,就这么多。


    展开全文
  • xlrdimport到程序中才能使用,就像我们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中的数据形式就符合要求了,再用鼠标向下拖动...
  • 表格右侧一空做序号,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函数去做搜索,你这个需求提的不太完整,比如黄色是不是必定比蓝色的多,不会有分配不完的情况;对分配的顺序有没有要求等等,补充下吧

    展开全文
  • 因工作需要,我们会一个Excel文档里面创建很多个sheet工作表,不过接下来你就会碰到一个问题,你想要查找某个工作表就会变得很麻烦,如果一个表一个表过去,那效率真的太低了。那有什么好办法吗?当然有!我们...
  • 好不容易做好了公司2020年的日历,想要设置一下更改时间的动态调节框,在wps开发工具下插入了一...实际上这个和我们的excel中也是类似的,只不过在excel中都是在开发工具下,一个是表单控件(数值调节框),一个是数值...
  • JXL读取Excel精度问题

    千次阅读 2015-05-11 14:53:21
    根据得到的值来转换为各种类型,但是我有几个表格中的数据值是小数点后五位,怎么取都得到的是三位小数,网上了一下资料说,excel的表格设置为文本框,还是一样的效果,没办法就看了下jxl这个以部
  • 如题,这两天网上也...网上百度了一下,很多都说是权限的问题,但是我根据他们说的,怎么调权限都没有成功,这让我很失望,而且我想现在很多人和我遇到的问题一样吧,还就是不到真正能解决问题的答案。<br /
  • 微信内置浏览器导出Excel表格功能

    千次阅读 2018-07-30 18:04:42
    唉,,,折腾了一天,从网上各种资料,但是给的解决方案都不是我想要的(也不知道谁复制的谁的,基本都一样)。 快下班的时候,我请教了一位朋友,我问他是怎么解决的,他说:很简单,发邮件就可以了。 为方便...
  • 有时候是word里,有时候是excel,每次都要上网查一下,因为方法有点麻烦,根本记不住。不同软件操作方法还不一样,有的是改字体,有的是插入特殊符号,有的用快捷键。下面小编总结一下,怎么输入“对勾”简单又好...
  • 系统win7升级位64后,重新安装了access2010(64位)和excel(64位)还有wps2016个人版,可以access里打开外部的excel文件,也能导入,但是不可以像之前一样的access和wps文件互相打开和导入数据,错误提示如下:...
  • 连接数据库jili表,jili这几个太难打了,下文用df代表激励数据(代码省略)之前在excel中用烂了的透视表,终于用python来实现了,其实主要是讲pivot_table里面的参数怎么使用,但书中讲的不是详细,还是要自己一些...
  • 4.视频的【16:44】开始是使用easyuefi创建efi引导,这一步前面都跟他视频一样,他怎么点你就怎么点,只不过,选择引导文件为:EFI/BOOT/BOOTx64.efi ⭐️如果你不会安装,需要安装服务,联系微信ske1996 可提供收费...
  • 可用数据文件(能被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不...
  • -增加示例-如何将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改成...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

怎么在excel找一样的