В моей программе я загружаю файл Excel и создаю из него данные.Я должен сделать операцию поиска в файле Excel.Я думаю, мой стиль поиска неправильный.Поскольку я выполняю линейный поиск для поиска своего элемента
for(int i = 0; i < dt.Rows.Count; i++)
{
if(dt.Rows[i][UIDDecIndex].ToString() == UIDS)
{
flag = 1;
Tetikle(dt.Rows[i][OgrenciNumarasiIndex].ToString());
}
}
Когда я загрузил файл Excel, содержащий 13 000 строк, на моем компьютере проблем нет.Но когда я пытаюсь использовать медленный компьютер, Windows закрывается без каких-либо ошибок.(Я имею в виду, что окно формы закрывается при поиске);
это мой код конвертации, но он запускается только во время загрузки;
public static DataTable ConvertExcelToDataTable(string FileName)
{
DataTable dtResult = null;
int totalSheet = 0; //No of sheets on excel file
using (OleDbConnection objConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';"))
{
objConn.Open();
OleDbCommand cmd = new OleDbCommand();
OleDbDataAdapter oleda = new OleDbDataAdapter();
DataSet ds = new DataSet();
DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string sheetName = string.Empty;
if (dt != null)
{
var tempDataTable = (from dataRow in dt.AsEnumerable()
where !dataRow["TABLE_NAME"].ToString().Contains("FilterDatabase")
select dataRow).CopyToDataTable();
dt = tempDataTable;
totalSheet = dt.Rows.Count;
sheetName = dt.Rows[0]["TABLE_NAME"].ToString();
}
cmd.Connection = objConn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM [" + sheetName + "]";
oleda = new OleDbDataAdapter(cmd);
oleda.Fill(ds, "excelData");
dtResult = ds.Tables["excelData"];
objConn.Close();
return dtResult; //Returning Dattable
}
}
я должен использовать sqlite вместо datatable?