我是C#中的新手,我在c#Windows应用程序中遇到了一个问题。 我在c#中创建了一个Windows应用程序,它成功地完成了所有任务,但是当我第一次尝试打开我的c#windows应用程序时,它需要大约1分30秒,因为第一次在应用程序中加载了一个excel文件试图打开应用程序。如何减少在第一次打开应用程序时将Excel文件数据加载到C#应用程序的时间
该excel文件用于“AutoCompleteStringCollection”。
请参阅下面的代码,并建议我的解决方案,我可以如何减少我的应用程序的开放时间。
private void Form1_Load(object sender, EventArgs e)
{
InitializeTextSearchListView();
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection DataCollection = new AutoCompleteStringCollection();
addItems(DataCollection,listView1);
textBox1.AutoCompleteCustomSource = DataCollection;
}
public void addItems(AutoCompleteStringCollection col, ListView ListView1)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;
object missing = System.Reflection.Missing.Value;
string str;
int rCnt = 0;
int cCnt = 0;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open("C:\\SAM Files\\Static Ticker Data.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
range = xlWorkSheet.UsedRange;
for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
{
for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
{
if (!(((range.Cells[rCnt, cCnt] as Excel.Range).Value2) == null))
{
if ((range.Cells[rCnt, cCnt] as Excel.Range).Value2.GetType().ToString() == "System.Double")
{
double d1 = (Double)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
str = Convert.ToString(d1);
col.Add(str);
}
else
{
str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
col.Add(str);
}
}
}
}
注:当我选择较少的数据包含然后Excel应用程序打开时间也减少意味着它的问题了,选择大型数据包含Excel文件。
所以请告诉我如何减少打开我的应用程序的时间。
在应用程序启动后,您可以尝试使用不同的线程从Excel加载数据。 – Elangovan
跨越程序和Excel过程之间的鸿沟所需的过程使得此代码非常昂贵。请务必阅读只*一次*,[读取数组](http://stackoverflow.com/questions/910400/reading-from-excel-range-into-multidimensional-array-c-sharp),而不是一个单元格一次。并强烈考虑使用OpenXML API,因此您不必等到Excel启动。 –
由此,您只需添加一个项目的线性列表,那么为什么不使用简单的文本文件或XML配置文件而不是Excel? – cjb110