Ускорить работу с Excel - C#
Формулировка задачи:
Листинг программы
- Excel.Application xlApp = new Excel.Application(); //Excel
- xlApp.ScreenUpdating = false;
- Excel.Workbook xlWB; //рабочая книга
- Excel.Worksheet xlSht; //лист Excel
- xlWB = xlApp.Workbooks.Open(@"D:\test1223.xlsx"); //название файла Excel
- xlSht = xlWB.Sheets[1]; //название листа или можно так если лист первый по порядку - xlWB.Sheets[1];
- int iLastRow = xlSht.Cells[xlSht.Rows.Count, "A"].End[Excel.XlDirection.xlUp].Row; //последняя заполненная строка в столбце А
- for (int i = iLastRow; i >= 2; i--)
- {
- if (xlSht.Cells[i, 2].Value.ToString().Length < 8)
- {
- xlSht.Rows[i].Delete();
- }
- }
- xlApp.ScreenUpdating = true;
- xlWB.Close(true); //закрываем книгу, сохраняя изменения
Решение задачи: «Ускорить работу с Excel»
textual
Листинг программы
- using System;
- using System.Windows.Forms;
- using Excel = Microsoft.Office.Interop.Excel;
- namespace TestExcel
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Excel.Application xlApp = new Excel.Application(); //Excel
- Excel.Workbook xlWB; //рабочая книга
- Excel.Worksheet xlSht; //лист Excel
- Excel.Range Rng; //диапазон ячеек
- xlWB = xlApp.Workbooks.Open(@"C:\C#\Test Excel.xlsx"); //название файла Excel
- xlSht = xlWB.Worksheets["Лист1"]; //название листа или 1-й лист в книге xlSht = xlWB.Worksheets[1];
- int iLastRow = xlSht.Cells[xlSht.Rows.Count, "A"].End[Excel.XlDirection.xlUp].Row; //последняя заполненная строка в столбце А
- var arrData = (object[,])xlSht.Range["A1:A" + iLastRow].Value; //берём данные с листа Excel
- object[,] arrResult = new object[arrData.GetUpperBound(0), arrData.GetUpperBound(1)]; //указываем размер нового массива
- int iCol = 1; //предполагаем, что у нас лишь 1 столбец с данными в нашем примере
- int iRowInResultArray = 0;
- for (int iRow = 1; iRow <= arrData.GetUpperBound(0); iRow++) //цикл по строкам
- {
- if (arrData[iRow, iCol] != null) //если ячека не пустая
- {
- if (arrData[iRow, iCol].ToString().Length > 8) //наше условие - длина больше 8
- {
- iRowInResultArray ++;
- arrResult[iRowInResultArray, 0] = arrData[iRow, iCol].ToString(); //перекладываем данные с общего массива в чистый массив
- }
- }
- }
- //xlSht.Cells.Clear();//удаляем данные со всего листа
- xlSht.Range["B1"].Resize[arrResult.GetUpperBound(0), arrResult.GetUpperBound(1)+1].Value = arrResult; //выгрузка результата на лист
- //можно выгрузить в новый книгу
- //xlWB = xlApp.Workbooks.Add(); //создаём новую книгу
- //xlWB.Worksheets[1].Range["A1"].Resize[arrResult.GetUpperBound(0), arrResult.GetUpperBound(1) + 1].Value = arrResult; //выгрузка результата на лист
- xlApp.Visible = true; //отображаем Excel
- MessageBox.Show("Конец!", "Программа", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д