我正在使用excel文件,我正在尝试找到日期值如“16/02/2015”作为内容的单元格的位置(地址)。为了使用Windows窗体应用程序执行此操作,我使用datetimepicker。我的代码如下:
// Firstly I want a string like 16/02/2015 inserted in the datetimepicker
string date = DateTimePicker1.Value.ToString().Substring(0,10);
List<string> Testsdone = new List<string>();
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(file_opened, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(4);
Excel.Range currentFind = null;
Excel.Range firstFind = null;
Excel.Range tests = xlWorkSheet.get_Range("K13", "K2295");
currentFind = tests.Find(date);
.....
我的excel文件中写有完全相同的内容“16/02/2015”,但currectFind始终显示为null!我不知道为什么这两个“16/02/2015”是不同的。有人有个主意吗?谢谢!
答案 0 :(得分:0)
经过一些调查后我发现问题是由Find函数引起的
currentFind = tests.Find(date);
由于未知原因未能找到日期。从另一篇文章 how to Search in excel file我得到了这个方法,我将其改为:
currentFind = xlworkSheet.Cells.Find(date, 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);
它有效。但我仍然不知道为什么Excel.Range.Find失败并且Excel.workersheet.Cells.Find工作