浅谈Excel内容比较
说起文件内容比较,或许我们首先想到的是UltraCompare这类专业比较的软件,其功能非常强大,能够
对基于文本的文件内容作出快速、准确的比较,有详细的差异报告,非常便于分析。其实,各种版本控制
软件中也包含有或多或少的比较功能,如TFS、CVS、SVN等。但是如果待比较的文件不是基于文本类型
的,那就无能为力了。今天我就来谈一谈Excel的比较方法及其特点,也和大家共同探讨一下,如果你有
更好的方法,欢迎分享。
一、Excel的文件架构
Excel的文件结构,一个Excel是一个工作簿,其中可以包含若干个工作表,正式由于这个架构,造成比较
Excel中的内容比较困难,尤其当工作表中的数据量很大时,常规的比较软件更是无能为力。
二、三种比较方法
下面我分别用三种方法来比较两个Excel中的内容,首先准备两个测试Excel,为了简单起见,两个Excel
都只包含一个工作表,其中填充了一些数字:
图1、
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
图2、
1、首先我用比较笨的方法,写一段程序,逐个比较单元格(假设两个Excel中包含的工作表的命名和个数
完全相同):
代码
private void fnExcelCompare(string v_strSourcePath, string v_strDestPath)
{
this.__int内容不同单元格个数 = 0;
this.__dic内容不同.Clear();
ation app = new ation();
yAlerts = fal;
ok srcBook = (v_strSourcePath);
ok destBook = (v_strDestPath);
FileStream log = new FileStream(pPath + @
"", Create, ite);
StreamWriter writer = new StreamWriter(log);
string msg = string.Empty;
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
ine("**************************************************************
*******************n");
foreach (eet sheet in eets)
{
for (int i = 1; i <= ; i++)
{
for (int j = 1; j <= ; j++)
{
string src = [i, j].Value2 == null ? string.Empty : sheet.
Cells[i, j].ng();
string dest = eets[].Cells[i, j].Value2 =
= null ? string.Empty : eets[].Cells[i, j].ng();
if (src != dest)
{
msg = ng() + "------" + + " 【" + t
his.fnGetExcelAddress(i, j) + "】单元格中的内容不相同n";
this.__int内容不同单元格个数++;
this.__dic内容不同.Add(this.__int内容不同单元格个数, msg);
ine(msg);
}
}
}
}
ine("**************************************************************
*******************n");
();
();
();
eComObject(app);
eComObject(srcBook);
eComObject(destBook);
app = null;
srcBook = null;
destBook = null;
t();
}
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
2、使用OpenXML SDK 2.0
前面的文章讲过OpenXML SDK及其相关工具的简单用法,其实还可以用它来比较Excel,当然,仅限于
比较Excel 2007、Excel 2010。
如果你还没有安装OpenXML SDK 2.0,可以在这里下载。
下载完毕,一步步安装结束后,就可以使用了。
1)打开Productivity Tool:
2)对这个工具做一些简单配置:
可以选择显示行号、忽略命名空间、忽略声明:
选择待比较的Excel版本,我使用的Excel 2010,故选择第二个:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
3)点击【Compare Files】,然后选择两个待比较的Excel文件,点击【OK】:
4)可以看到Excel被分拆成了一个个part,标记为绿色的表示内容中有不同:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
5)选择一个标记为绿色的part,点击【View Par Diff】,可以查看具体的明细:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
这个界面与传统的比较软件中的界面非常相似,可以很容易的看出不同之处。
这种方法的缺点是比较结果不够直观,难以获取比较的汇总结果,当数据量很大时更是如此。
3、使用SpreadshCompare
SpreadshCompare是国外人写的一个VBA插件,开源免费,可以在sourceforge上下载,最新版本是1.15,
支持Excel 2003,Excel 2007,目前还不支持Excel 2010 x64。由于我使用的是Excel 2010 x64,故暂时
在虚拟机中进行测试。
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
我使用的Hyper-V,安装了Windows Server 2003 R2,Office 2007。
1)下载完毕安装后,在Excel的【加载项】中可以看到一个天平的小图标:
2)先打开两个待比较的Excel:、,然后分别选择两个待比较的Excel,点击【Next】:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
3)选择逐单元格比较,保持大小写敏感,其他选项默认:
4)分别选择待比较的工作表,点击【Next】:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
5)选择比较所有的区域,点击【Next】:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
6)选择生成汇总表选项,保持默认即可:
7)设置工作表的顺序,然后点击【Compare】:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
8)首先会给出一个简短的汇总信息:
9)点击【确定】后会生成两个工作簿,一个记录所有不同之处,另一个给出单元格对比分析:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
10)同时对源文件也用颜色进行了标示,黄色表示不同:
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
经过大量数据测试,该插件性能很高,速度较快。以后我会试着修改下这个插件的源代码,争取支持Excel
2010 x64。
其他类似的还有Compare Spreadsheet For Excel(商业软件)、Excel Compare(商业软件)、Synkronizer
for Excel(商业软件)等。
三、小结
本次我们畅谈了下Excel的比较问题,给出了三种解决方案,三种方案各有优劣,只是适用场合不同,请
根据你的需求进行选择。
tbw淘宝网 taob 防晒霜热卖排行榜10强 什么防晒霜效果好 曼秀雷敦防晒霜 防晒霜排行
榜9强
本文发布于:2023-11-23 01:04:04,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1700672645223570.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:浅谈Excel内容比较.doc
本文 PDF 下载地址:浅谈Excel内容比较.pdf
留言与评论(共有 0 条评论) |