精华内容
下载资源
问答
  • Marketing给你传了一个EXCEL,发话:这是最新版本,上次的作废,把新的release出去吧。 我,打开...纳尼?!没有mark,没有comments?我怎么知道你改了什么??每个都对过来?!!我能爆粗口么 !@&(……@...

    情景对话:

    Marketing给你传了一个EXCEL,发话:这是最新版本,上次的作废,把新的release出去吧。

    我,打开...纳尼?!没有mark,没有comments?我怎么知道你改了什么??每个都对过来?!!我能爆粗口么 !@&(……@)!#*&……*

    相信很多人都有这种情况,这个时候你i就需要强大的助手来比较EXCEL, 正题如下:


    1). 如果你已经装了EXCEL2013,那么恭喜你,可以用上“Spreadsheet Compare 2013”这个微软自带的强大工具了。在Office2013 Tools 中你可以找到这个工具,确实非常强大,直观的比较,还可以导出比对结果,简单易用,人性化,要的就是这个效果,相信用过后你也会爱不释手。如果你还在惆怅如何比较 EXCEL 文件,赶紧使用吧,它是迄今为止本人觉得最好的比较工具,没有之一。


    2). 如果你不幸还在用老的EXCEL,当然可以比较的。下面转的文章也可助你一臂之力(有点费劲哦)。

    说起文件内容比较,或许我们首先想到的是UltraCompare这类专业比较的软件,其功能非常强大,能够对基于文本的文件内容作出快速、准确的比较,有详细的差异报告,非常便于分析。其实,各种版本控制软件中也包含有或多或少的比较功能,如TFS、CVS、SVN等。但是如果待比较的文件不是基于文本类型的,那就无能为力了。今天我就来谈一谈Excel的比较方法及其特点,也和大家共同探讨一下,如果你有更好的方法,欢迎分享。

     

    一、Excel的文件架构

    Excel的文件结构,一个Excel是一个工作簿,其中可以包含若干个工作表,正式由于这个架构,造成比较Excel中的内容比较困难,尤其当工作表中的数据量很大时,常规的比较软件更是无能为力。

     

    二、三种比较方法

    下面我分别用三种方法来比较两个Excel中的内容,首先准备两个测试Excel,为了简单起见,两个Excel都只包含一个工作表,其中填充了一些数字:

    图1、1.xlsx

     

    图2、2.xlsx

     

    1、首先我用比较笨的方法,写一段程序,逐个比较单元格(假设两个Excel中包含的工作表的命名和个数完全相同):

     

     

    复制代码
             private   void  fnExcelCompare( string  v_strSourcePath,  string  v_strDestPath)
            {
                 this .__int内容不同单元格个数  =   0 ;
                 this .__dic内容不同.Clear();

                Excel.Application app  =   new  Excel.Application();
                app.DisplayAlerts  =   false ;
                Excel.Workbook srcBook  =  app.Workbooks.Open(v_strSourcePath);
                Excel.Workbook destBook  =  app.Workbooks.Open(v_strDestPath);
                FileStream log  =   new  FileStream(System.Windows.Forms.Application.StartupPath  +   @" \Logs\ReportCheck.log " , FileMode.OpenOrCreate, FileAccess.ReadWrite);
                StreamWriter writer  =   new  StreamWriter(log);
                 string  msg  =   string .Empty;

                writer.WriteLine( " *********************************************************************************\n " );
                 foreach  (Excel.Worksheet sheet  in  srcBook.Worksheets)
                {
                     for  ( int  i  =   1 ; i  <=  sheet.UsedRange.Rows.Count; i ++ )
                    {
                         for  ( int  j  =   1 ; j  <=  sheet.UsedRange.Columns.Count; j ++ )
                        {
                             string  src  =  sheet.Cells[i, j].Value2  ==   null   ?   string .Empty : sheet.Cells[i, j].Value2.ToString();
                             string  dest  =  destBook.Worksheets[sheet.Name].Cells[i, j].Value2  ==   null   ?   string .Empty : destBook.Worksheets[sheet.Name].Cells[i, j].Value2.ToString();

                             if  (src  !=  dest)
                            {
                                msg  =  DateTime.Now.ToString()  +   " ------ "   +  sheet.Name  +   "  【 "   +   this .fnGetExcelAddress(i, j)  +   " 】单元格中的内容不相同\n " ;
                                 this .__int内容不同单元格个数 ++ ;
                                 this .__dic内容不同.Add( this .__int内容不同单元格个数, msg);
                                writer.WriteLine(msg);
                            }
                        }
                    }
                }
                writer.WriteLine( " *********************************************************************************\n " );

                srcBook.Save();
                destBook.Save();

                app.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(srcBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(destBook);
                app  =   null ;
                srcBook  =   null ;
                destBook  =   null ;
                GC.Collect();
            }
    复制代码

     

     

    2、使用OpenXML SDK 2.0

    前面的文章讲过OpenXML SDK及其相关工具的简单用法,其实还可以用它来比较Excel,当然,仅限于比较Excel 2007、Excel 2010。

    如果你还没有安装OpenXML SDK 2.0,可以在这里下载。

    下载完毕,一步步安装结束后,就可以使用了。

    1)打开Productivity Tool:

     

    2)对这个工具做一些简单配置:

    可以选择显示行号、忽略命名空间、忽略声明:

    选择待比较的Excel版本,我使用的Excel 2010,故选择第二个:

     

    3)点击【Compare Files】,然后选择两个待比较的Excel文件,点击【OK】:

     

    4)可以看到Excel被分拆成了一个个part,标记为绿色的表示内容中有不同:

     

    5)选择一个标记为绿色的part,点击【View Par Diff】,可以查看具体的明细:

    这个界面与传统的比较软件中的界面非常相似,可以很容易的看出不同之处。

    这种方法的缺点是比较结果不够直观,难以获取比较的汇总结果,当数据量很大时更是如此。

     

    3、使用SpreadshCompare

    SpreadshCompare是国外人写的一个VBA插件,开源免费,可以在sourceforge上下载,最新版本是1.15,支持Excel 2003,Excel 2007,目前还不支持Excel 2010 x64。由于我使用的是Excel 2010 x64,故暂时在虚拟机中进行测试。

    我使用的Hyper-V,安装了Windows Server 2003 R2,Office 2007。

    1)下载完毕安装后,在Excel的【加载项】中可以看到一个天平的小图标:

     

    2)先打开两个待比较的Excel:1.xlsx、2.xlsx,然后分别选择两个待比较的Excel,点击【Next】:

     

    3)选择逐单元格比较,保持大小写敏感,其他选项默认:

     

    4)分别选择待比较的工作表,点击【Next】:

     

    5)选择比较所有的区域,点击【Next】:

     

    6)选择生成汇总表选项,保持默认即可:

     

    7)设置工作表的顺序,然后点击【Compare】:

     

    8)首先会给出一个简短的汇总信息:

     

    9)点击【确定】后会生成两个工作簿,一个记录所有不同之处,另一个给出单元格对比分析:

     

     

    10)同时对源文件也用颜色进行了标示,黄色表示不同:

     

    经过大量数据测试,该插件性能很高,速度较快。以后我会试着修改下这个插件的源代码,争取支持Excel 2010 x64。

    其他类似的还有Compare Spreadsheet For Excel(商业软件)、Excel Compare(商业软件)、Synkronizer for Excel(商业软件)等。

     

    三、小结

    本次我们畅谈了下Excel的比较问题,给出了三种解决方案,三种方案各有优劣,只是适用场合不同,请根据你的需求进行选择。

    展开全文
  • 例如有两个excel表格,第一天生成了表格A,第二天生成了B, 把第二天表格B和第一天表格A做对比。 如果A没有,B有,表示是新增的,最后加一列0,标注是增加的 如果是有修改过的,最后加一列1,标注是...
  • python比较两个excel表格的差异

    千次阅读 2017-11-27 14:47:00
    一个同事有两个excel表格要比较差异, 找了一下有相关软件,如: beyond compare, excel compare 但这两个似乎都是直接排序再比较的. 然后没办法,就用python折腾了一个脚本. 这个脚本先读入要比较的文件中的表. 读的...

    一个同事有两个excel表格要比较差异, 找了一下有相关软件,如: beyond compare, excel compare

    但这两个似乎都是直接排序再比较的.


    然后没办法,就用python折腾了一个脚本. 这个脚本先读入要比较的文件中的表. 读的时候 ,如果没有空行就把它和它前面的加一起,直到有空行. 这样比较的话, 不能得到具体那一行有差异, 只有一个大概的位置. 如果表格中间空行越少,越精确. 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    #!/usr/bin/python
    #-*- coding:utf-8 -*-
     
    import  xlrd, os, sys
     
    if  len (sys.argv) ! =  3 :
       print  "\n        ./script diff_1.xlsx diff_2.xlsx \n"
       sys.exit()
     
    diff  =  {}
    xls1  =  sys.argv[ 1 ]
    xls2  =  sys.argv[ 2 ]
     
    if  os.path.isfile(xls1)  and  os.path.isfile(xls2):
       pass
    else :
       print  "\n        ./script diff_1.xlsx diff_2.xlsx \n"
       sys.exit()
     
    def  getcontent(table):   #获取xlsx表内容
       tmp_data  =  {}
       tmp_table  =  ''
       all_data  =  {}
     
       for  in  xrange (table.nrows):
         tmp  =  table.row_values(j)
         if  list ( set (tmp))  = =  ['']:
           tmp_data[tmp_table]  =  ''
           if  tmp_table ! =  '':
             all_data[j]  =  tmp_table
           tmp_table  =  ''
         else :
           tmp2  =  ""
           for  in  tmp:
             try :
               tmp2  =  tmp2  +  +  ","
             except :
               tmp2  =  tmp2  +  str (i) +  ","
           tmp_table  =  tmp_table  +  tmp2  +  "\n"   #把多行的内容放一起
       return  (tmp_data, all_data)
     
    def  write_file(excel_diff, filename):
       =  open (filename,  'w' )
       f.write(excel_diff)
       f.close()
     
    def  diff_content(table1,table2):  #检查两个表差异
       diff_tmp  =  []
       for  in  table1:
         if  in  table2:
           pass
         else :
           diff_tmp.append(i)
       return  list ( set (diff_tmp))
      
    def  get_rows(diff, all_data):  #获取差异位置
       tmp  =  []
       for  in  diff:
         for  in  all_data:
           if  all_data[j].strip()  = =  i.strip():
             tmp.append(j)
             break
       return  tmp
            
     
    for  in  range ( 0 , 2 ):   # 比较几个表
       data1  =  xlrd.open_workbook(xls1)
       table1  =  data1.sheets()[i]
       data2  =  xlrd.open_workbook(xls2)
       table2  =  data2.sheets()[i]
       
       tmp1, all1  =  getcontent(table1)
       tmp2, all2  =  getcontent(table2)
     
       result  =  diff_content(tmp1, tmp2)  #1 中有 2 没有的具体内容
    #  result2= diff_content(tmp2, tmp1)  #2 中有 1 没有的具体内容
     
       diff[i]  =  get_rows(result,all1)
       print  sorted (diff[i])
     
    #  write_file(sorted(diff[i]), "/tmp/diff.txt")
     
    #  diff[i] = get_rows(result2,all2)
    #  print sorted(diff[i])



    本文转自 nonono11 51CTO博客,原文链接:http://blog.51cto.com/abian/1603947,如需转载请自行联系原作者
    展开全文
  • 两个不同的EXCEL表格如何进行排序对比,两个Excel表如何比较一样不一样 如何比较两个excel,使用这个工具:http://www.excelfb.com/ 点击:比较两个Excel表的值 解决以下问题: Excel表格中数据比对 Excel如何...

    两个不同的EXCEL表格如何进行排序对比,两个Excel表如何比较一样不一样

    如何比较两个excel,使用这个工具:http://www.excelfb.com/  点击: 表对齐比较--》 比较两个Excel表的值(按指定列自动对齐)

    解决以下问题:

       比较两个Excel的值

    Excel如何实现两个工作表数据的对比,对比找出两张Excel表的不同数据,列出数据差异,支持没有排序的数据

           如果我们有两个Excel表,有一些人员两个表中都有,有一些人员两个表都有各自不同的 (部分一样),如何比较他们的值的不同。

    使用这个工具:http://www.excelfb.com/  点击:对齐比较-->比较两个Excel表的值(按指定列自动对齐)

    操作如下图:

     

    展开全文
  • 两个EXCEL文件的比较

    千次阅读 2019-01-26 07:42:05
    要对两个EXCEL文件中的数据进行比较,可以用EXCEL的高级筛选功能,也可以通过借助ACCESS进行比较,相比之下,借助ACCESS,比较两个EXCEL文件,更灵活,更容易。 1.在ACCESS中新建数据库文件,文件->...


    要对两个EXCEL文件中的数据进行比较,可以用EXCEL的高级筛选功能,也可以通过借助ACCESS进行比较,
    相比之下,借助ACCESS,比较两个EXCEL文件,更灵活,更容易。

    1.在ACCESS中新建数据库文件,文件->获取外部数据->导入,导入两个EXCEL文件为两张表。

    2.通过Sql查询语句实现数据比较。  001.gif

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/209689/viewspace-587033/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/209689/viewspace-587033/

    展开全文
  • Java比较两excel-Apache POI

    千次阅读 2018-07-17 15:40:49
    1:下列代码为Java比较两份excel 或者同一份excel两个不同的sheet每一行是否相同;同时提供模糊匹配和精准匹配两个方案可以选择。大家如果有更好的方法 欢迎大家在下面留言哦...  A:读取excel组装成list集合 ...
  • 工作中遇到要对两个Excel表格文件进行数据对比,找出其中不同的行。例如,比较同一用户的信息是否一致,这里的信息可能是不同版本的,但是属性列是一致的,数据内容上可能不同。如下表所示: Excel 1 姓名 性别...
  • java读取excel,比较两个sheet数据

    千次阅读 2019-04-04 10:20:24
    加入两个依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency> <dependency>...
  • 如何快速对比两个excel中的数据

    万次阅读 2019-08-01 13:15:59
    这两天给系统一个模块加了mongoDB缓存,但是由于是第一次做这...准备:excel(我用的wps),两个excel文档A、B 第一步:打开A,它在A文档的sheet1中 第二步:把B文档用来做对比的数据,拷贝到A文档的sheet2中 ...
  • python 中对比两个Excel 文件内容

    千次阅读 2019-05-16 16:09:00
    import xlrd def read_excel(fileName): global newset newset = set() global listdata listdata = [] bk=xlrd.open_workbook(fileName) # shxrange=range(bk.nsheets) # print(bk.she...
  • 对比Excel两个sheet的数据是否相同

    千次阅读 2020-07-09 16:30:13
    Excel存在两个sheet,名字分别叫admin和user 再新建一个sheet,在A1单元格中输入公式【=IF(admin!A1<>user!A1,“admin:”&admin!A1&" vs user:"&user!A1,"")】,两个sheet中相同的数据会显示空,...
  • 现在有两套结构一致的数据,放在80和2000两个文件夹中,文件名字相同,但文件数据不一致 80中的是xls格式存储,利用xlrd读取数据 2000中的是xlsx格式存储,利用openpyxl读取数据 然后对读取到的数据进行对比 第...
  • python实现比较两Excel数据差异

    万次阅读 2017-02-15 15:52:28
    1,读取excel文档数据 2,数据编码格式处理 3,find与rfind函数区别 4,检索关键字符并截取 5,查找关键字符并替换 6,集合,差集 实现代码如下: import xlrd l_p=[] l_q=[] l_q1=[] l_p1=[] #旧的一份...
  • python--对比两个Excel不同

    万次阅读 2017-12-22 14:22:40
    #对比两个版本的Excel数据的异同 ########################### import xlrd import xlwt import os l_p = [] #定义两个全局list,分别存储原始和目的需要对比的数据 l_t = [] def read_excel(): wb_pri = xlrd.open...
  • java 如何比较2个excel ,并把差异的数据写到第三个excel表中。有什么高效率的方法吗?(备注:数据可能很多)
  • SQL使用技巧-两个表比对数据(Excel表中存在而数据库表中不存在的数据) 看到这样的问题我第一反应是百度,可能是打开方式不对,愣是搜了半天,so出个博客记录下。 1、先把数据库文件导入本地数据库(如果连服务器...
  • 对比找出Excel表的不同数据

    万次阅读 2018-12-04 15:27:39
    工作中经常遇到张数据相似的Excel表格,可能第一张是原始数据,第二张做了一些修改,对比张表格,如何看到修改了哪些数据哪? 1、选中表1的数据,点击【条件格式】——【新建规则】 2、选择【只包含以下内容的...
  • 两个EXCEL文件对比去重

    千次阅读 2014-04-10 11:32:00
    两个EXCEL文件,A里面有10000条记录,B里面有4000条记录,A的记录包含了B里面所有的记录现在如何能把A里面没有包含B的6000条记录筛选出来? 那你要把两同时打开,比如book1 book2数据都在A列,A1是数据的第一个那么...
  • 对于经常使用Excel作...下边提供我最近编写的一个diff两个Excel文件的Python脚本,用到了xlrd库。 #!/usr/bin/python #coding=gbk # 用法:python diff_excel.py [file1] [file2] from xlrd import open_workbook i
  • 使用pandas合并两个excel

    万次阅读 2019-07-07 18:58:25
    1.读取数据 import openpyxl ...df1 = pd.DataFrame(pd.read_excel('table1.xls',sheet_name = 'Sheet1')) df2 = pd.DataFrame(pd.read_excel('table2.xls',sheet_name = 'Sheet1')) >>> df1...
  • 但是,如果C盘和D盘被严格地隔离了,在C盘开启的excel表格和D盘开启的excel表格不是同一进程中的,那么就不能随时link内容了。 怎么样才能在excel表格内书写代码,从进程读取另一表格的数据呢? 求解答! ...
  • python实现两个excel数据匹配,最终写入新的excel文件

    千次阅读 热门讨论 2020-12-09 14:13:01
    需要根据HID匹配两个表,把表1的坐标内容补充到表2 代码 import shutil import sys import xlwt import xlrd file1 = "C:\\Users\\xuyin\\Desktop\\新建文件夹\\match-excel\\表1.xls" #打开表1 wb1 = xlrd.open...
  • Excel如何根据两个表中相同的列将其它列的数据合并在同一个表,或者进行Excel对齐合并...工具地址:www.excelfb.com,点击: 多个Excel按列对齐合并(两个表列相同合并) 操作如下图: 使用示例一: 合并两年的销...
  • Office excel2010如何用两个文件分别打开两个窗口 ​ Office excel2010 打开两个文件的时候,会变成两个窗口,显示在一个文件里面,对于需要两个文件对比编辑,十分不变。 ​ 解决办法 1 点击菜单“文件”下的“选项...
  • C#合并多个Excel到一个Excel

    热门讨论 2016-01-22 21:53:59
    合并多个Excel到一个Excel,C#文件代码,IDE为VS2008
  • python---合并两个excel表格内容

    千次阅读 2020-04-07 10:50:42
    示例:两个excel表格如下: 1.xlsx 2.xlsx 现要将上面两个表格合并如下: 合并.csv 解决方法: CSV(CommaSeparatedValues,逗号分隔值 ),是一个纯文本格式,用逗号分隔一系列值。它存储数据,但不包含格...
  • 【python】pandas匹配拼接两个excel

    千次阅读 2020-05-18 17:16:08
    excel处理大量数据匹配过程中,虽然可以使用vlookup,但是数据量超过10万进行批量匹配的时候,效率非常差,因此使用python。经查,发现python通过pandas库的merge可以实现类似于SQL中join的功能,具体参考下文: ...
  • 按某列ID合并两个Excel的数据,首先两个excel中要有相同的一列值,才能将这两个表合并起来,合并代码如下: # -*- coding: utf-8 -*- """ Created on Fri Jul 17 16:50:20 2020 """ #按行匹配两个excel中的数据,以...
  • 由于工作中经常有2表格内容需要比对一下,把不同的内容列出来,所以做了一对比程序。
  • excel 如何比较两个表的字段相同的

    千次阅读 2018-02-09 13:49:27
    =IF(ISERROR(MATCH(A1,Sheetall!$A$2:$A$3223,0)),"",A1)Sheetall是原数据的另外一表格

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 183,482
精华内容 73,392
关键字:

比较两个excel