Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Поиск в Excel


Автор: NewGeneration 21.5.2012, 14:51
Здравствуйте! Пытаюсь организовать поиск по листу книги Excel. 
Т.е. в самом начале книга подключена поздним связыванием



Код

using Excel = Microsoft.Office.Interop.Excel;



Код


private void button1_Click(object sender, EventArgs e)
        {
            excelapp = new Excel.Application();
            excelapp.Workbooks.Open(@"C:\4.xls", Type.Missing, Type.Missing, 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);            
        }


Далее я в textbox1 ввожу, к примеру, слово TXTMessage, это означает что искать нужно на листе TXT, а в textbox2 - условие поиска по третьему столбцу (к примеру).

Как реализовать поиск?

Автор: BoomeR 25.5.2012, 10:07
Маловато информации ты привел... Поиск можно организовать подобным образом (или перебором через foreach).
Код

using Excel = Microsoft.Office.Interop.Excel;
using System.Linq;
...
Excel.Workbook wb; //объявлена глобально
...
private void button1_Click(object sender, EventArgs e)
        {
            excelapp = new Excel.Application();
            wb = excelapp.Workbooks.Open(@"C:\4.xls", Type.Missing, Type.Missing, 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);            
        }
...
private List<string> Search ()
{
            Excel.Worksheet ws = wb.Worksheets.OfType<Excel.Worksheet>().Where(w=>w.Name==textbox1.Text).FirstOrDefault();
            if (ws != null)
            {
                 object[,] range = ws.get_Range("C1", "C" + ws.UsedRange.Rows.Count).Value;
                 return range.Cast<object>().Where(o=>o.ToString().Contains(textbox2.Text)).Select(o=> o.ToString()).ToList();
            }
            else return new List<string>();
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)