sreenathpktr Ответов: 2

Проблема при сохранении файла excel с помощью savedialogbox.


Привет,

Я экспортировал значение gridview в файл excel.Но когда я попытался сохранить его с помощью диалогового окна сохранения,он не работает,но никакой ошибки не показывает.Пожалуйста, исправьте мою ошибку.Код, который я использую, приведен ниже.

private void button2_Click(object sender, EventArgs e)
       {

           string sd;
           saveFileDialog1.ShowDialog();
           saveFileDialog1.InitialDirectory = "c:";
           saveFileDialog1.FileName = "";
           saveFileDialog1.Filter = "Excel File|*.xls|All Files|*.*";







           Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
           ExcelApp.Application.Workbooks.Add(Type.Missing);


           ExcelApp.Columns.ColumnWidth = 20;


           for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
           {
               ExcelApp.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
           }


           for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
           {
               for (int j = 0; j < dataGridView1.Columns.Count; j++)
               {
                   ExcelApp.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
               }
           }


           sd = saveFileDialog1.FileName;
           ExcelApp.ActiveWorkbook.SaveCopyAs(sd);
           ExcelApp.ActiveWorkbook.Saved = true;
           ExcelApp.Quit();
           MessageBox.Show("Excel file created");
       }

Christian Graus

Мне это кажется логичным. Что значит "не работает", вы вообще получаете какой-либо сохраненный файл ? Вам нужно установить, какая книга является "активной" ? Не SaveCopyAs ничего возвращать ?

sreenathpktr

не работает значит,если я выбрал диск c: и сохранил,а файла там нет.Но никакой ошибки не видно.

Christian Graus

Хорошо - тогда вы можете проверить в отладчике или коде, что такое ActiveWorkbook ? Возвращает ли SaveCopyAs какое-либо значение для успеха или есть свойство, которое вы можете проверить, чтобы узнать, что пошло не так ? Является ли SaveCopyAs единственным методом сохранения, который вы можете вызвать ?

sreenathpktr

Я пробовал некоторые другие методы сохранения,но показывает некоторые ошибки.Когда я попробовал обойтись без savedialogbox,файл был создан.

2 Ответов

Рейтинг:
0

Wendelius

Почему бы не использовать Сохранить как[^] вместо.

Также с помощью отладчика проверьте, что вы задали правильный путь и имя файла sd переменная.

Вы также можете подключить провод Перед сохранением[^] чтобы увидеть, что происходит перед операцией сохранения.


Рейтинг:
0

sreenathpktr

private void button2_Click(object sender, EventArgs e)
       {

           string sd;
           saveFileDialog1.ShowDialog();
           saveFileDialog1.InitialDirectory = "c:";

           saveFileDialog1.Filter = "Excel File|*.xls|All Files|*.*";







           Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
           ExcelApp.Application.Workbooks.Add(Type.Missing);


           ExcelApp.Columns.ColumnWidth = 20;


           for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
           {
               ExcelApp.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
           }


           for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
           {
               for (int j = 0; j < dataGridView1.Columns.Count; j++)
               {
                   ExcelApp.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
               }
           }


           sd = saveFileDialog1.FileName;

           ExcelApp.ActiveWorkbook.SaveCopyAs(sd+".xls");
           ExcelApp.ActiveWorkbook.Saved = true;
           ExcelApp.Quit();
           MessageBox.Show("Excel file created");
       }


Richard MacCutchan

Означает ли это, что он работает теперь, когда вы не очищаете имя файла, или он все еще не работает?