Ускорить работу с 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);
}
}
}