SaveFileDialog 提示尝试读取或写入受保护的内存。这通常指示其他内存已损坏
private void ExportExcel()
{
DataTable dtVilationList = Grab.GetVilationList(guid.ToString());
SaveFileDialog dlg = new SaveFileDialog()
{
Filter = "*.xls|*.xls",
RestoreDirectory = true,
FileName = DateTime.Now.ToString("yyyyMMddhhmmss")
};
if (dlg.ShowDialog() == DialogResult.OK)
{
string[] columns = new string[] {
"车牌","违规时间","违规行为","违规地点","罚款金额","扣分","异地办理费"
};
int i = 0;
foreach (string c in columns)
{
dtVilationList.Columns[i++].ColumnName = c;
}
CSD.Tools.DownExcel downExcel = new CSD.Tools.DownExcel();
downExcel.Width(0, 16);
downExcel.Width(1, 18);
downExcel.Width(2, 35);
downExcel.Width(3, 35);
downExcel.Width(6, 16);
downExcel.File(dtVilationList, dlg.FileName);
MessageBox.Show("导出成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
第一次SaveFileDialog 是正常显示,并能保存,,再次点击导出Excel的话会报错误,
错误定位在,“ if (dlg.ShowDialog() == DialogResult.OK)”
错误信息:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
数据是从Access读取的
[解决办法]
执行下面代码是没问题的,估计这应该还是你那个cst导致的
SaveFileDialog dlg = new SaveFileDialog()
{
Filter = "*.xls
[解决办法]
*.xls",
RestoreDirectory = true,
FileName = DateTime.Now.ToString("yyyyMMddhhmmss")
};
if (dlg.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("导出成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
[解决办法]
downExcel这个每次处理完不需要释放吗?不释放不是一直占用着你用的文件?
[解决办法]
调试一下看两次dtVilationList有什么不同
[解决办法]
貌似问题出在DownExcel上,其他地方实在看不出什么问题了