Подключите нашего Telegram-бота для уведомлений о новых проектах

C# Netoffice: ускорение сохранения в excel

Разместить заказ
i
Заказчик
Отзывы фрилансеров: + 56 - 0
Зарегистрирован на сайте 15 лет и 6 месяцев
Бюджет: по договоренности
Исполнитель определен: Игорь Козьбан  
Написал вот такую функцию с использованием NetOffice (функция для сохранения из datatable в excel) 

=== 

        public static void saveDataTableToExcelFile(string filePath, DataTable dt, out string error) 
        { 
            DataTable retVal = new DataTable(); 
            error = ""; 

            try 
            { 
                Excel.Application _excelApplication = new Excel.Application(); 
                Excel.Workbook book = _excelApplication.Workbooks.Add(); 
                Excel.Worksheet sheet = book.Worksheets[1] as Excel.Worksheet; 

                for (int c = 0; c <>hey! I did not invent this line of code,  
                    // I found it somewhere on CodeProject.</small>  
                    // <small>It works to add the whole row at once, pretty cool huh?</small> 
                    //ws.Range["A2"].Offset[Idx].Resize[1, dt.Columns.Count].Value = 
                    //dt.Rows[Idx].ItemArray; 
                } 

                book.Activate(); 

                sheet.Columns.AutoFit(); 

                _excelApplication.ActiveWorkbook.SaveAs(filePath,  
                    Missing.Value, Missing.Value, Missing.Value, false, 
                    false, XlSaveAsAccessMode.xlExclusive); 

                //CleanUp 
                book.Close(); 
                _excelApplication.Quit(); 
                _excelApplication.Dispose(); 
            } 
            catch (Exception exp) 
            { 
                error = exp.Message; 
            } 

        } 

=== 

Но с большими объемами работает очень медленно (на ниже приведенном тесте можно ждать несколько минут) 

=== 

#region todo remove 

                        DataTable dt = new DataTable(); 

                        dt.Columns.Add("header1"); 
                        dt.Columns.Add("header2"); 
                         
                        for (int i = 0; i < 50000; i++) 
                        { 
                            DataRow dr = dt.NewRow(); 
                            dr["header1"] = "1value_" + i; 
                            dr["header2"] = "2value_" + i; 
                            dt.Rows.Add(dr); 
                        } 

                        XlsHandlingNetOffice. 
                            saveDataTableToExcelFile(filePath, dt,out error); 

                        #endregion 
=== 

Нужно ускорение, чтобы 50000 рядков не сохранялись дольше 10-15 сек.
Разделы:
Опубликован:
02.02.2015 | 21:28

Теги: написать программу, создать программу, разработать программу, разработчики программ, прикладной программист

Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».