Поиск в DataGridView (файл Excel) + c # - PullRequest
0 голосов
/ 23 июня 2011

У меня есть проблема :-) Я пытаюсь сделать быстрый поиск с подсветкой в ​​представлении данных.

В моем представлении данных есть лист Excel.вот так:

enter image description here

Понятия не имею, надеюсь, мне кто-нибудь поможет: -)

Большое спасибо

1 Ответ

1 голос
/ 23 июня 2011

1 - загрузить из Excel в таблицу данных (что вы уже сделали), а затем сохранить DataTable в глобальную переменную

2 - При поиске нажмите DataTable.Select : пример или, так как вы используете oledb, вы можете снова выбрать свой Excel с помощью простого запроса вместо Datatable select, вы можете попробовать его, если производительность datatable select низкая. Пример excel search

3- затем Выделите текст в сетке данных, я не использовал формы Windows так долго, но, возможно, http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/43f6b81f-4cb7-4e8e-bd29-e3645f200734/ может быть подсказкой для вас

Хорошо, я использовал ссылки, которые я предоставил, пока все хорошо, за исключением того, что все работает:

Класс Simple Helper для чтения Excel и поиска в DataTable:

public class ExcelHelper
    {
        public static DataTable LoadXLS(string strFile, String sheetName)
        {
            DataTable dtXLS = new DataTable(sheetName);
            try
            {
                string strConnectionString = "";
                if (strFile.Trim().EndsWith(".xlsx"))
                {
                    strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile);
                }
                else if (strFile.Trim().EndsWith(".xls"))
                {
                    strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile);
                }
                OleDbConnection SQLConn = new OleDbConnection(strConnectionString);
                SQLConn.Open();
                OleDbDataAdapter SQLAdapter = new OleDbDataAdapter();
                string sql = "SELECT * FROM [" + sheetName + "$] "; // "WHERE " + column + " = " + value;
                OleDbCommand selectCMD = new OleDbCommand(sql, SQLConn);
                SQLAdapter.SelectCommand = selectCMD;

                SQLAdapter.Fill(dtXLS);
                SQLConn.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            return dtXLS;
        }

        public  static DataTable QueryDataTable(DataTable dt, string column,string value)
        {
            var drs =  dt.Select(String.Format("{0} LIKE '%{1}%'", column, value));
            DataTable dt2 = dt.Clone();
            foreach (var dataRow in drs)
            {
                dt2.ImportRow(dataRow);
            }
            return dt2;
        }
    }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...