Excelファイルから読み書きするac#.netアプリケーションがあります。私の検索では、各ファイルの 20 個のセルのデータを比較するため、10000 個のファイルを検索すると 70 秒かかります。これは非常に長いです。それをより速くするためのより良い解決策のアイデア。読み取り関数は次のとおりです。
public static void OpenExcel(string fileName, bool visibility, FunctionToExecute fn = null)
{
string addInPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Microsoft\\AddIns\\mDF_XLcalendar.xla");
deleg = fn;
app = new Excel.Application();
app.Workbooks.Open(addInPath);
app.Workbooks.Open(fileName);
app.ScreenUpdating = true;
app.DisplayAlerts = true;
app.Visible = visibility;
app.UserControl = true;
app.WindowState = Excel.XlWindowState.xlMaximized;
EventDel_BeforeBookClose = new Excel.AppEvents_WorkbookBeforeCloseEventHandler(application_WorkbookBeforeClose);
EventSave_BeforeBookClose = new Excel.AppEvents_WorkbookBeforeSaveEventHandler(Open_ExcelApp_WorkbookBeforeSave);
app.WorkbookBeforeClose += EventDel_BeforeBookClose;
app.WorkbookBeforeSave += EventSave_BeforeBookClose;
}
検索を行うコードは次のとおりです。
string searchString = ((RichTextBox)searchObject.LstObject[0]).Text.Trim();
bool contain = ExcelFunctions
.RemoveDiacritics(ExcelFunctions.Read(GetSummaryXl, coord))
.ToLower()
.Contains(ExcelFunctions.RemoveDiacritics(searchString).ToLower());
return string.IsNullOrEmpty(searchString) || (!string.IsNullOrEmpty(searchString) && contain);
私は多くのテストを行いましたが、私の読み取り機能は 1 つのファイルで検索時間の 90% を費やしているようです。