Экспорт данных из datagridview в excel очень медленный
Привет, я здесь новенькая .Также новичок в .net . Когда я экспортирую данные из DataGridview в Excel с помощью события нажатия кнопки ,это очень медленно и занимает много времени.В будущем я буду хранить пылинки более 3000 записей . так что, пожалуйста, предложите мне более толстый путь. Я использую форму windows.
Что я уже пробовал:
{ Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet = null; worksheet = workbook.Sheets["Sheet1"]; worksheet = workbook.ActiveSheet; worksheet.Name = "AssetAllocatedtoEmployee"; for (int i = 1; i < dataGridView1.Columns.Count+1; i++) { worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText; } { for (int i = 0; i < dataGridView1.Rows.Count; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); } } var saveFileDialog = new SaveFileDialog(); saveFileDialog.FileName = "AssetAllocatedtoEmployee"; saveFileDialog.Filter = "Excel files(2007)|*.xlsx"; if (saveFileDialog.ShowDialog()==DialogResult.OK) { workbook.SaveAs(saveFileDialog.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); }
Maciej Los
У вас компонент DataGridView привязан к источнику данных, bindingsource?
Откуда берутся данные?
Satyabrata Samantaray
строка запроса = "";
if (comboBox1.SelectedIndex == 10)
{
Ящик для сообщений.Показать("выберите критерии для поиска");
}
if (comboBox1.SelectedIndex == 0)
{
query = "select * from tblAssetMaster where Branch_EmpID like '%" + textBox5.Text.Trim() + "%'";
}
else if (comboBox1.SelectedIndex == 1)
{
query = "select * from tblAssetMaster where SerialNumber like '%" + textBox5.Text.Trim() + "%'";
}
else if (comboBox1.SelectedIndex == 2)
{
query = "select * from tblAssetMaster where UINNumber like '%" + textBox5.Text.Trim() + "%'";
}
//UINNumber
// серийный_номер
против.Открыть();
Sqlcommand, который cmd6 = новый sqlcommand, который(запрос, кон);
Класс sqldatareader sqlReader6 = cmd6.Метода executereader();
если (sqlReader6.HasRows)
{
DataTable dt = новый DataTable();
DataTable dt1 = новый DataTable();
dt.Load(sqlReader6);
ст1 = ДТ.DefaultView.ToTable(true);
dgv1.Источник данных = ст1;
foreach (DataGridViewBand band in dgv1.Columns)
{
группа.Толькочтение = истина;
}
}
против.Закрывать();
CHill60
Это не решение вашей проблемы, но ваши SQL - операторы уязвимы для атаки SQL-инъекций-никогда не объединяйте строки для создания sql-операторов. Видеть SQL-инъекция - Википедия[^]
Предотвращение инъекций SQL · серия шпаргалок OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]