winform dategridview导入,导出excel,数据几万条也不会卡
发布网友
发布时间:2022-04-30 04:43
我来回答
共2个回答
热心网友
时间:2023-10-13 15:16
给你个类,直接传那个ddatagridview就行
public void ExportDataGridViewToExcel(DataGridView dataGridview1)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出Excel文件到";
DateTime now = DateTime.Now;
saveFileDialog.FileName = now.Year.ToString().PadLeft(2) + now.Month.ToString().PadLeft(2, '0') + now.Day.ToString().PadLeft(2, '0') + "-" + now.Hour.ToString().PadLeft(2, '0') + now.Minute.ToString().PadLeft(2, '0') + now.Second.ToString().PadLeft(2, '0');
saveFileDialog.ShowDialog();
Stream myStream;
myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = 0; i < dataGridview1.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dataGridview1.Columns[i].HeaderText;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dataGridview1.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dataGridview1.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += dataGridview1.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
MessageBox.Show("导出成功");
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
参考资料:http://hi.baidu.com/royler/blog/item/bf5f7aef675d7df5b3fb956c.html
热心网友
时间:2023-10-13 15:16
一楼,好人啊!
这个我也喜欢
热心网友
时间:2023-10-13 15:16
给你个类,直接传那个ddatagridview就行
public void ExportDataGridViewToExcel(DataGridView dataGridview1)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出Excel文件到";
DateTime now = DateTime.Now;
saveFileDialog.FileName = now.Year.ToString().PadLeft(2) + now.Month.ToString().PadLeft(2, '0') + now.Day.ToString().PadLeft(2, '0') + "-" + now.Hour.ToString().PadLeft(2, '0') + now.Minute.ToString().PadLeft(2, '0') + now.Second.ToString().PadLeft(2, '0');
saveFileDialog.ShowDialog();
Stream myStream;
myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = 0; i < dataGridview1.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dataGridview1.Columns[i].HeaderText;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dataGridview1.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dataGridview1.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += dataGridview1.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
MessageBox.Show("导出成功");
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
参考资料:http://hi.baidu.com/royler/blog/item/bf5f7aef675d7df5b3fb956c.html
热心网友
时间:2023-10-13 15:16
一楼,好人啊!
这个我也喜欢
c#导出excel慢
这其实最主要是算法的问题,没看到你的程序,只能猜测。如果你的程序是每导出一条数据,都是先连接数据库,再导出数据,再关闭数据库,然后循环完成,虽然在逻辑上没问题,且少量数据导出时速度上没太大感觉,但大数据量导出时必然出现导出问题。1、应在逻辑上改为,先连接数据库,循环导出完成后,再关...
...数据库查询出来的数据,显示在现有的DateGridView中?
string connectionString = "server=服务器ip;database=数据库;uid=用户;pwd=密码";String sqlstr="select * from 表"sqldataAdapter = new SqlDataAdapter(sqlstr, SqlConnection(connectionString));sqldataAdapter.Fill(ds);datagridview1.datasource=ds;这样就了~...
在2007EXCEL中怎样使用窗体控件链接数据
右击“列表框”,执行快捷菜单命令“设置控件格式”,单击“控制”选项卡,“数据源区域”中输入“$A$2:$A$5”(不含引号)、“单元格链接”中输入“$B$1”,“选定类型”中单击选中“单选”,单击“确定”按钮。 此时,拉动A1的列表框右侧垂直滚动条,单击选择列表框中的数据“北京”,在B1单元格中显示数据“1”。