C#で新しくなったのは、C#Windowsアプリケーションに1つ問題があります。 私はC#で1つのWindowsアプリケーションを作成していますが、すべてのタスクを正常に処理していますが、C#Windowsアプリケーションを初めて開こうとすると、最初に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のApplication開放時間を含んでも大規模なデータを選択するためにその問題は、ファイルをエクセル含ん意味軽減されます。
私のアプリケーションを開く時間を短縮する方法を教えてください。
アプリケーションの起動後、別のスレッドを使用してExcelからデータを読み込めます。 – Elangovan
プログラムとExcelプロセスとの間の分割を橋渡しするために必要なプロセスinteropは、このコードを非常に高価にします。 1つのセルではなく、* 1回*、[配列の読み込み](http://stackoverflow.com/questions/910400/reading-from-excel-range-into-multidimensional-array-c-sharp)を必ず読んでください。時間。代わりにOpenXML APIを使用することを強く検討して、Excelが起動するまで待つ必要はありません。 –
それでは、アイテムの線形リストを追加するだけで、なぜExcelの代わりに単純なテキストファイルやXML設定ファイルを使用しないのですか? – cjb110