C# 查找EXCEL的两种方法比较
来源:互联网 发布:西门子200plc编程实例 编辑:程序博客网 时间:2024/06/05 16:58
第一种方法是才用COM一个个CELL比较,代码如下:
</pre><pre name="code" class="csharp"><span style="white-space:pre"></span>for (int row = 1; row < xsl.workSheet.UsedRange.Rows.Count; row++) { bool matched = false; for (int col = 1; col < xsl.workSheet.UsedRange.Columns.Count; col++) { String val = xsl.workSheet.Cells[row, col].Text; if (val != "") { if (val.IndexOf(searchString) >= 0) { //System.Console.WriteLine("{0}, {1}, {2}", row, col, val); matched = true; break; } } } lock (searchResult) { searchResult.doneRows = row; if (matched) { searchResult.matchRows++; searchResult.totalMatchRows++; // 复制匹配行到结果集里 xslResult.workSheet.Cells[searchResult.totalMatchRows, 1] = searchResult.currentFileName; xslResult.workSheet.Cells[searchResult.totalMatchRows, 2] = searchResult.currentSheetName; for (int col = 1; col < xsl.workSheet.UsedRange.Columns.Count; col++) { xslResult.workSheet.Cells[searchResult.totalMatchRows, col + 2] = xsl.workSheet.Cells[row, col]; } } } }
第二种方法是先把EXCEL复制到数组里,再和数组一个个比较,代码如下:
<span style="white-space:pre"></span>Object[,] saRet = (System.Object[,])xsl.workSheet.UsedRange.get_Value(); for (int row = 1; row < saRet.GetUpperBound(0); row++) { bool matched = false; for (int col = 1; col < saRet.GetUpperBound(1); col++) { if (saRet[row, col] != null) { String val = saRet[row, col].ToString(); if (val.IndexOf(searchString) >= 0) { //System.Console.WriteLine("{0}, {1}, {2}", row, col, val); matched = true; break; } } } lock (searchResult) { searchResult.doneRows = row; if (matched) { searchResult.matchRows++; searchResult.totalMatchRows++; // 复制匹配行到结果集里 xslResult.workSheet.Cells[searchResult.totalMatchRows, 1] = searchResult.currentFileName; xslResult.workSheet.Cells[searchResult.totalMatchRows, 2] = searchResult.currentSheetName; for (int col = 1; col < xsl.workSheet.UsedRange.Columns.Count; col++) { xslResult.workSheet.Cells[searchResult.totalMatchRows, col + 2] = saRet[row, col]; } } } }
这两种方法一比较,第二种方法竟然比较第一种方法快100倍左右。
0 0
- C# 查找EXCEL的两种方法比较
- C#中访问Excel的两种方法
- C# DataGridView导出Excel的两种经典方法
- C#中访问Excel的两种方法
- C# DataGridView导出Excel的两种经典方法
- 两种C#时间比较大小的方法
- linux 的shell处理两Excel的比较方法
- C#中Excel文件的读取的两种方法:Excel类和OleDb
- C# 操作Excel 方法比较
- C#打开Excel文档的两大方法解析
- C#打开Excel文档的两大方法解析
- 两种查找bapi的方法
- 两种简单的查找方法
- 二分查找的两种实现方法
- 二分法查找的两种方法
- 在c#中读取Excel文件提供两种方法
- C#实现向已存在的Excel文件中写入数据实例(两种方法)
- C#将Excel数据表导入SQL数据库的两种方法
- juce基本模板
- 按位与、或、异或等运算方法
- MapReduce(十二): Map和Reduce阶段数据合并的处理
- 字符串循环右移
- 毕业后就职第二月 碎碎念(一)
- C# 查找EXCEL的两种方法比较
- linux 建立设备文件
- java通过jni调用c库
- Search for a Range
- c++ primer(第五版)笔记 第九章 顺序容器(2)
- LDA-math-MCMC 和 Gibbs Sampling
- 黑马程序员——流程控制语句
- Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
- Zabbix如何监控Windows机器