Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
therealwis
0 / 0 / 0
Регистрация: 30.05.2017
Сообщений: 2
#1

Оптимизация цикла чтения данных из Excel

30.05.2017, 22:24. Просмотров 176. Ответов 0
Метки нет (Все метки)

Здравствуйте,в ходе выполнения курсовой работы столкнулся с проблемой того,что цикл,который должен подсчитывать занятость аудиторий выполняется слишком долго(точнее 572 секунды для одной аудитории,а их 294)
Сама задача заключается в подсчете кол-ва аудиторий в расписании за месяц(каждая аудитория находится в рандомной ячейке) для этого приходится просматривать все 114000 ячеек на 2 условия(т.к. может быть ауд.1 и ауд. 1)
Прошу помочь в вопросе оптимизации цикла,либо в ином способе решения задачи
Вот сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
using System.Data.SqlClient;
 
namespace Расчет_занятости_аудиторий_института
{
    public partial class Form1 : Form
    {
        private Excel.Application excelapp;
        private Excel.Sheets excelsheets;
        private Excel.Worksheet excelworksheet;
        private Excel.Range excelcells;
        string[] mas1 = {"A", "B", "C", "D", "E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
                                    "AA", "AB", "AC", "AD", "AE","AF","AG","AH","AI","AJ","AK","AL","AM","AN","AO","AP","AQ","AR","AS","AT","AU","AV","AW","AX","AY","AZ",
                                    "BA", "BB", "BC", "BD", "BE","BF","BG","BH","BI","BJ","BK","BL","BM","BN","BO","BP","BQ","BR","BS","BT","BU","BV","BW","BX","BY","BZ",
                                    "CA", "CB", "CC", "CD", "CE","CF","CG","CH","CI","CJ","CK","CL","CM","CN","CO","CP","CQ","CR","CS","CT","CU","CV","CW","CX","CY","CZ",
                                    "DA", "DB", "DC", "DD", "DE","DF","DG","DH","DI","DJ","DK","DL","DM","DN","DO","DP","DQ","DR","DS","DT","DU","DV","DW","DX","DY","DZ",
                                    "EA", "EB", "EC", "ED", "EE","EF","EG","EH","EI","EJ","EK","EL","EM","EN","EO","EP","EQ","ER","ES","ET","EU","EV","EW","EX","EY","EZ",
                                    "FA", "FB", "FC", "FD", "FE","FF","FG","FH","FI","FJ","FK","FL","FM","FN","FO","FP","FQ","FR","FS","FT","FU","FV","FW","FX","FY","FZ",
                                    "GA", "GB", "GC", "GD", "GE","GF","GG","GH","GI","GJ","GK","GL","GM","GN","GO","GP","GQ","GR","GS","GT","GU","GV","GW","GX","GY","GZ",
                                    "HA", "HB", "HC", "HD", "HE","HF","HG","HH","HI","HJ","HK","HL","HM","HN","HO","HP","HQ","HR","HS","HT","HU","HV","HW","HX","HY","HZ",
                                    "IA", "IB", "IC", "ID", "IE","IF","IG","IH","II","IJ","IK","IL","IM","IN","IO","IP","IQ","IR","IS","IT","IU","IV","IW","IX","IY","IZ",
                                    "JA", "JB", "JC", "JD", "JE","JF","JG","JH","JI","JJ","JK","JL","JM","JN","JO","JP","JQ","JR","JS","JT","JU","JV","JW","JX","JY","JZ"};
       
        int[] mas2 = new int[401];
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 1; i < 401; i++)
            {
                mas2[i] = i;
            }
            int k = 0;
            excelapp = new Excel.Application();
            excelapp.Visible = true;
            excelapp.Workbooks.Open(@"C:\a1.xls", Type.Missing);
           excelsheets = excelapp.ActiveWorkbook.Worksheets;
          excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
         excelapp.Visible = false;
 
             //for(int i =0; 5 > i; i++) { ... }
             //for(int i = 5; --i >=0; ) { ... }
        
         for (int i = 0; i < 286; i++)
         {
             for (int j = 1; j < 401; j++)
             {
                 excelworksheet.Range["A666"].FormulaLocal = "=ЕСЛИ(ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(" "&ПОДСТАВИТЬ(" + mas1[i] + mas2[j] + ";" ";ПОВТОР(" ";999));1;999*4);999);" ";"")="ауд.149н";1;0)";
                 Int32 l;
                 excelcells = excelworksheet.get_Range("A666", Type.Missing);
                 l = Convert.ToInt32(excelcells.Value2);
                 if (l == 1)
                 {
                     k += 1;
                 }
                 excelworksheet.Range["A666"].FormulaLocal = "=ЕСЛИ(ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(" "&ПОДСТАВИТЬ(" + mas1[i] + mas2[j] + ";" ";ПОВТОР(" ";999));1;999*4);999);" ";"")="149н";1;0)";
                 excelcells = excelworksheet.get_Range("A666", Type.Missing);
                 l = Convert.ToInt32(excelcells.Value2);
                 if (l == 1)
                 {
                     k += 1;
                 }
 
             }
         }
         excelcells = excelworksheet.get_Range("A667", Type.Missing);
         excelcells.Value2 = k;
         MessageBox.Show(Convert.ToString(k));
     }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2017, 22:24
Ответы с готовыми решениями:

Оптимизация чтения с COM - порта
И снова здравствуйте, у меня возникла проблема, от которой уже мозги кипят. ...

Оптимизация цикла for()
Доброго времени суток, форумчане! При нажатии на кнопку: private void...

Оптимизация цикла for в таймере
всем привет, подскажите кто-нибудь, как мне оптимизировать работу...

Реализация чтения данных из XML, на одну форму, если количество таких данных неограниченно
Создание XML-файла с названием Promotion.xml (можно типизированного, с заранее...

Ошибка при сохранении после чтения-записи в Excel
Добрый день! Имеется две кнопки, одна для записи в эксель, другая для чтения...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2017, 22:24

Измерить скорость чтения и записи данных на диск
Определить скорости чтения и записи блока данных доступных для чтения и записи...

Большая работа с Excel (передача в него данных, построение графиков, дозапись, создание нового файла Excel)
Всем участниками большой привет. Снова нужна помощь. Что имеем: -Имеем форму...

Скорость записи и чтения данных с разных источников - из реестра и Json
Всем привет. Возникла необходимость где то хранить данные приложения. Было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru