
为何SaveFileDialog保存的文件路径不能打开
1个回答
展开全部
这是我写的表示层的代码:
private void btnExport_Click(object sender, EventArgs e){if (this.dgvShow.Rows.Count <= 0){MessageBox.Show("没有数据可以导出!!!");return;}SaveFileDialog fileDialog = new SaveFileDialog();
fileDialog.DefaultExt = "xls";
//设置默认文件类型显示顺序
fileDialog.FilterIndex = 2;
//保存对话框是否记忆上次打开的目录
fileDialog.RestoreDirectory = true;
if (fileDialog.ShowDialog() == DialogResult.OK){if ((fileDialog.OpenFile()) != null){//获得文件路径
String localFilePath = fileDialog.FileName;
teacherService.ExportData(dgvShow, localFilePath);
MessageBox.Show("OK!!");return;}}MessageBox.Show("Error!!");}我把导Excel数据的代码:
public void ExportData(DataGridView dgvShow,String dir){Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Workbooks.Add();
int num = 1;
for (int i = 0; i < dgvShow.Columns.Count; i++){if (dgvShow.Columns[i] is DataGridViewTextBoxColumn){excel.Cells[1, num] = dgvShow.Columns[i].HeaderText;num++;}}for (int i = 0; i < dgvShow.Rows.Count; i++){num = 1;for (int j = 0; j < dgvShow.Columns.Count; j++){string value = dgvShow.Rows[i].Cells[j].Value.ToString();
if (dgvShow.Columns[j] is DataGridViewTextBoxColumn){excel.Cells[i + 2, num] = value;num++;}}}excel.ActiveWorkbook.SaveAs(dir,XlFileFormat.xlWorkbookNormal);
excel.ActiveWorkbook.Close();
------解决方案-------------------------------------------------------- 首先文件流打开没关闭,这是你写不进去的原因
其次filter都没指定内容,你指定filterindex干吗
------解决方案-------------------------------------------------------- if ((fileDialog.OpenFile()) != null)
我一直没用过OpenFile的方法
------解决方案--------------------------------------------------------探讨首先文件流打开没关闭,这是你写不进去的原因
其次filter都没指定内容,你指定filterindex干吗
------解决方案-------------------------------------------------------- 这还不对就该看你export的方法了,你debug跟一下看看吧
比如dgvShow.Rows[i].Cells[j].Value.ToString();
如果dgvShow.Rows[i].Cells[j]是null的话,这句就会报错
------解决方案-------------------------------------------------------- 你可以在写入之前,退出你的程序,试试删除被保存的文件,看看有没有 提示被占用。
这个问题我之前页翻过。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询