如何在 C# 中搜索 Excel 文件

2024-05-05

我正在使用的代码:

private void OpenExcelFile()
{

  Excel.Application exlApp = new Microsoft.Office.Interop.Excel.Application();

  if (exlApp == null)
  {
      MessageBox.Show("Excel app object could not be created");
  }
  else
  {

      exlFileSelector.FileName = @"*.xls";

      if (exlFileSelector.ShowDialog() == DialogResult.OK)
      {
          Excel.Workbook wrkBook = exlApp.Workbooks.Open(exlFileSelector.FileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, true, true);
          Excel.Sheets sheetList = wrkBook.Sheets;

          Excel.Range search = exlApp.get_Range("A1", "C5");
          search.Find("FindMe", null, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlWhole, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false, null, null); 
      }
  }
}

这是“codex”对本论坛上一个问题的回答。但是当我将其复制到我的应用程序时,系统无法识别exlFileSelector.FileName。 我该如何修复它?我缺少什么? 一段时间以来,我一直在尝试在 Excel 文件中进行简单的搜索,但没有成功。 (我添加了项目所需的 Excel 参考)。 谢谢。


我找到了这样的代码,希望对您有帮助。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
using System.Reflection;


namespace testtesttestExcel
{
public partial class Form1 : Form
{
public Form1()

{
InitializeComponent();
}


//Declare these two variables globally so you can access them from both
//Button1 and Button2.
Microsoft.Office.Interop.Excel.Application objApp;
Microsoft.Office.Interop.Excel._Workbook objBook;

Microsoft.Office.Interop.Excel.Workbooks objBooks;
Microsoft.Office.Interop.Excel.Sheets objSheets;
Microsoft.Office.Interop.Excel._Worksheet objSheet;
Microsoft.Office.Interop.Excel.Range range;


private void button1_Click(object sender, System.EventArgs e)
{

try
{
// Instantiate Excel and start a new workbook.
objApp = new Microsoft.Office.Interop.Excel.Application();
objBooks = objApp.Workbooks;
objBook = objBooks.Add(Missing.Value);
objSheets = objBook.Worksheets;
objSheet = (Microsoft.Office.Interop.Excel._Worksheet)objSheets.get_Item(1);

//Get the range where the starting cell has the address
//m_sStartingCell and its dimensions are m_iNumRows x m_iNumCols.
range = objSheet.get_Range("A1", Missing.Value);
range = range.get_Resize(5, 5);

//Create an array.
double[,] saRet = new double[5, 5];

//Fill the array.
for (long iRow = 0; iRow < 5; iRow++)
{
for (long iCol = 0; iCol < 5; iCol++)
{
//Put a counter in the cell.
saRet[iRow, iCol] = iRow * iCol * iCol;
}
}

//Set the range value to the array.
range.set_Value(Missing.Value, saRet);
objApp.Visible = true;
objApp.UserControl = true;

}

catch( Exception theException )
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat( errorMessage, theException.Message );
errorMessage = String.Concat( errorMessage, " Line: " );
errorMessage = String.Concat( errorMessage, theException.Source );

MessageBox.Show( errorMessage, "Error" );
}



Microsoft.Office.Interop.Excel.Range currentFind = null;
Microsoft.Office.Interop.Excel.Range firstFind = null;

string A = "16";

// You should specify all these parameters every time you call this method,
// since they can be overridden in the user interface.
currentFind = objSheet.Cells.Find(A, Type.Missing,
Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues, Microsoft.Office.Interop.Excel.XlLookAt.xlWhole,
Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, false,
Type.Missing, Type.Missing);

while (currentFind != null)
{
// Keep track of the first range you find.
if (firstFind == null)
{
firstFind = currentFind;

//textBox1.Text = currentFind.get_Address(true, true, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, false, Missing.Value);


}

// If you didn't move to a new range, you are done.
else if (currentFind.get_Address(Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing)
== firstFind.get_Address(Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing))
{
break;
}

currentFind.Font.Color = System.Drawing.ColorTranslator.ToOl
(System.Drawing.Color.Red);
currentFind.Font.Bold = true;


currentFind = objSheet.Cells.FindNext(currentFind);
}

}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中搜索 Excel 文件 的相关文章

  • 将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

    我正在尝试将字符串从 C 传递到 Delphi 构建的 DLL Delphi DLL 需要 PChar 这是Delphi导出 procedure DLL Message Location PChar AIntValue integer st
  • 为什么子函数不销毁GtkWindow?

    这是我的代码 void window first void enter window2 GtkWidget w gpointer data void quit GtkWidget w gpointer data void quit int
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • opencv中如何去除二值图像噪声?

    将图像转换为二值图像 黑白 后如果有任何噪音怎么办 我消除了那些不需要的噪音 您可以看到下图的黑色区域内有一些白噪声 我该如何去除噪声 使用opencv http img857 imageshack us img857 999 blackn
  • Linq 合并列表

    我的课 public class Foo public int A get set public List
  • 哪个更快:清除集合或实例化新集合

    我的代码中有一些通用列表 其中有数十或数百个元素 有时我需要用其他对象重新填充此列表 所以问题是 调用什么会更快Clear 方法或创建一个new List
  • 在c#中获取没有时间的日期

    我的表上有一列 缺勤日期时间 日期 当我想要获取包含日期的行时 它返回 0 行 这是我的 C 代码 DateTime ClassDate DateTime Parse lblDate Content ToString var Abs dbs
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • 如何在 C# 中更改公共 IP 地址

    我正在创建一个 C winform 应用程序 我想在其中更改公共 IP 地址 而不是像 Hotspot Shield ZenMate OpenVPN 等那样更改 IPv4 地址 我已经检查了以下链接 但没有找到足够的帮助 所以我发布了这个问
  • 如何从 Access 数据库中读取“是/否”值作为布尔值?

    帮我找回YES NO来自 MS Access 的布尔格式数据类型 我尝试解析它 但它总是返回 false 更新 实际上不是问题抱歉 它确实接受 YES NO 作为布尔值 OleDbconnection dbConnect new OleDb
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 当我的进程被终止时到底会发生什么?

    我有一个包含本机代码和托管代码的混合进程 在 Windows Server 2003 上运行 当我从进程资源管理器中终止进程时 它会进入 100 cpu 的状态 并在消失之前保持这种状态一段时间 有时甚至 10 分钟 在此期间我无法 杀死
  • 如何在c#中创建多线程

    我需要监听机器中的所有串行端口 假设我的机器有 4 个串行端口 我必须创建 4 个线程并开始分别使用附加线程监听每个端口 我使用此代码来获取我的机器中的端口数量 private SerialPort comPort new SerialPo
  • 在windows + opengl中选择图形设备

    我知道如何使用 openGL 打开窗口 使用 Win32 或其他工具包 但是当系统有2块显卡时 如何选择要渲染的图形设备 我的编程语言是 C 我专注于 Windows 但任何示例都将受到欢迎 编辑 也许更好地解释我的问题是个好主意 以便添加
  • 如何使用 C# 为 azure devops 变量赋值

    我有 selenium C 测试脚本 可以从浏览器获取令牌 我有两个 azure devops 任务 一个用于执行 selenium 测试 另一个用于执行 API 测试 我想将 selenium 测试获取的令牌传递给 API 测试执行任务

随机推荐

  • 如何使用方法更改类属性?

    我有一个 Django 模型类 它有一些默认属性 我想更改complete通过调用函数来改变变量 class Foo complete False def set complete true complete True 但打电话后set c
  • C++ 使用命名空间来避免长路径

    我仍在学习 C 之前从未真正创建过自己的命名空间 我正在对它们进行试验 虽然我已经完成了大部分工作 但有一件事我似乎仍然无法做到 我希望能够在类中调用静态方法 而无需输入类似的内容NameOfClass method 我认为代码应该如下所示
  • 如何在控制台应用程序中创建可终止的 while 循环?

    我目前正在寻找此 c 控制台应用程序功能的解决方案 我尝试寻找一种创建 while 循环的方法 该循环可以终止下面的代码 但我只得出与中断 while 循环相关的结果或不将其放入 while 循环的解决方案 int P1Choice int
  • Reactjs 中的扩展语法“...this.props”感觉很奇怪

    使用扩展运算符与诸如此类的对象发生反应propsJSX 中似乎没有输出我所期望的内容
  • 云代码:从 URL 创建 Parse.File

    我正在开发一个云代码函数 它使用 facebook graph API 来检索用户的个人资料图片 因此 我可以访问正确的图片 URL 但无法从该 URL 创建 Parse File 这几乎就是我正在尝试的 Parse Cloud httpR
  • 检查一个数据框中的单词是否出现在另一个数据框中(python 3,pandas)

    问题 我有两个数据框 想要删除它们之间的任何重复项 部分重复项 DF1 DF2 Phrases Phrases Little Red Little Red Corvette Grow Your Grow Your Beans James B
  • vm.dirty_ratio 和 vm.dirty_background_ratio 之间的区别?

    我目前正在试验中找到的内核参数 proc sys vm 尤其dirty ratio and dirty background ratio 内核文档对两者都有以下解释 脏背景比例 包含 以包含空闲页面的总可用内存的百分比表示 和可回收页 后台
  • GCC 4.7 字符串文字的源字符编码和执行字符编码?

    Linux x86 64 上的 GCC 4 7 是否具有默认字符编码 用于验证和解码 C 源文件中字符串文字的内容 这是可配置的吗 此外 当将字符串数据从字符串文字链接到输出的数据部分时 它是否具有默认的执行字符编码 这是可配置的吗 在任何
  • Excel VBA 将工作表保存到具有唯一名称的多个文件夹

    感谢您的所有意见 下面的代码是收到的输入的最终结果 我已经对这些错误进行了评论 这些错误直接关系到保存到数组中定义的文件夹中的总体预期结果 Option Explicit Public EngName As String TeamNum A
  • kubernetes nginx ingress 无法将 HTTP 重定向到 HTTPS

    我有一个托管在 Google Cloud 平台中的网络应用程序 该应用程序位于负载均衡器后面 而负载均衡器本身位于入口后面 入口设置了 SSL 证书 并按预期接受 HTTPS 连接 但有一个问题 我无法让它将非 HTTPS 连接重定向到 H
  • 如何在 Android 中使用 KSoap 2

    我刚刚发现 ksoap2 在 Android 应用程序中使用我自己的 asp net Web 服务 我在互联网上发现了一些很棒的资源 并且我已经在 Android 应用程序中实现了我的网络服务 以下是我使用的网络服务的响应 HTTP 1 1
  • 如何在 R 中将 dd/mm/yy 转换为 yyyy-mm-dd

    我有一个向量 其日期值采用这种格式 dd mm yy 例如 27 06 16 我想将其转换为 yyyy mm dd 格式 例如 2016 06 27 以进行逻辑比较 我正在使用这个表达 as Date as character 27 06
  • 类运算符

    我在编写代码时遇到问题 void main Matrix c rows cols rows cols are int numbers c 0 0 2 the line that I m having a problem to do the
  • 有没有办法让 LaTeX 将图形放置在同一页面中作为对该图形的引用?

    我正在使用 LaTeX 和图形环境 我非常熟悉该环境的参数 htbp 而且我通常也熟悉 LaTeX 默认情况下决定将每个图形放在哪里的策略 例如 将图形放置在页面的顶部或底部 我想知道是否有一个包 宏或一些我可以提供的命令 这样如果我有一个
  • 替换javascript中的换行符

    我正在尝试替换实例 r or n我的 json 对象中的字符 br 用于在网站上显示 I tried myString myString replace r n br 但这似乎并没有什么作用 当我用其他东西替换正则表达式时 例如 a 例如
  • R:用不同的颜色将一个 ECDF 绘制在另一个 ECDF 之上

    我有几个累积经验密度函数 我想将它们绘制在彼此之上 以说明两条曲线的差异 正如所指出的在上一个问题中 https i stack imgur com V7fIq png 绘制 ECDF 的函数很简单plot Ecdf 当我阅读精美的手册页时
  • 是否有不是完整网站的卡片/目录应用程序?

    我遇到的每个解决方案似乎都是一个完整的商店 有太多的选项和太多的功能 我可以编写自己的购物车来从前端获得我需要的最小功能 我只是想减少编写复杂后端的时间 我真正想要的是提供产品目录 订单管理等后端功能 同时提供流畅一致的 API 来访问完全
  • Winforms Chart - 在折线图上绘制允许的区域

    如何在图表上绘制灰色区域 信号的允许范围 我使用 Winforms 和标准 MicrosoftSystem Windows Forms DataVisualization类 它应该是自定义范围 这意味着起始 Y 点不能仅为零 我在运行时在线
  • Silverlight - 动画贝塞尔曲线画线?

    我正在构建一个小型 Silverlight 应用程序 在我的应用程序中 我需要绘制线条 类似于附图中所示的内容 我知道绘制拱形连接线 绿色 的最佳方法是使用贝塞尔曲线 我的问题是 如何对线条的绘制进行动画处理 让它们从起始 X Y 坐标开始
  • 如何在 C# 中搜索 Excel 文件

    我正在使用的代码 private void OpenExcelFile Excel Application exlApp new Microsoft Office Interop Excel Application if exlApp nu