C++\CLI datagridview导出到excel.xls文件

C++\CLI datagridview导出到excel.xls文件,excel,datagridview,c++-cli,xls,Excel,Datagridview,C++ Cli,Xls,我遇到的错误:不创建excel文件,仅在后台添加另一个Microsoft excel进程,当我尝试更改文件位置时,saveFileDialog崩溃: saveFileDialog1->InitialDirectory = "C:"; saveFileDialog1->Title = "Save as Excel File"; saveFileDialog1->FileName = ""; saveFileDialog1->Filter = "Excel Files(200

我遇到的错误:不创建excel文件,仅在后台添加另一个Microsoft excel进程,当我尝试更改文件位置时,saveFileDialog崩溃:

saveFileDialog1->InitialDirectory = "C:";
saveFileDialog1->Title = "Save as Excel File";
saveFileDialog1->FileName = "";
saveFileDialog1->Filter = "Excel Files(2003)|*.xls|Excel Files(2007)|*.xlsx";
if(saveFileDialog1>ShowDialog()==System::Windows::Forms::DialogResult::OK){
Microsoft::Office::Interop::Excel::Application^ ExcelApp = gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
ExcelApp->Workbooks->Add(Type::Missing);

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; i++)
{
for (int j = 0; j < datagridview1->Columns->Count; j++)
                {
ExcelApp->Cells[i+2,j+1] = datagridview1->Rows[i]->Cells[j]->Value->ToString();
}
}

ExcelApp->ActiveWorkbook->SaveCopyAs(saveFileDialog1->FileName->ToString());
ExcelApp->ActiveWorkbook->Saved=true;
ExcelApp->Quit();
saveFileDialog1->InitialDirectory=“C:”;
saveFileDialog1->Title=“另存为Excel文件”;
saveFileDialog1->FileName=“”;
saveFileDialog1->Filter=“Excel文件(2003)|*.xls | Excel文件(2007)|*.xlsx”;
如果(saveFileDialog1>ShowDialog()==System::Windows::Forms::DialogResult::OK){
Microsoft::Office::Interop::Excel::Application^ExcelApp=gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
Excel应用程序->工作簿->添加(类型::缺少);
对于(inti=1;iColumns->Count+1;i++)
{
ExcelApp->Cells[1,i]=datagridview1->Columns[i-1]->HeaderText;
}
对于(int i=0;iRows->Count;i++)
{
对于(int j=0;jColumns->Count;j++)
{
ExcelApp->Cells[i+2,j+1]=datagridview1->Rows[i]->Cells[j]->Value->ToString();
}
}
ExcelApp->ActiveWorkbook->SaveCopyAs(saveFileDialog1->FileName->ToString());
ExcelApp->ActiveWorkbook->Saved=true;
ExcelApp->Quit();

我曾经遇到过类似的问题,问题出现在将datagridview1写入文件的行和单元格中。代码应该如下所示:

saveFileDialog1->Title = "Save as Excel File";
saveFileDialog1->FileName = "";
saveFileDialog1->Filter = "Excel Files(2003)|*.xls|Excel Files(2007)|*.xlsx";
if(saveFileDialog1>ShowDialog()==System::Windows::Forms::DialogResult::OK){
Microsoft::Office::Interop::Excel::Application^ ExcelApp = gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
ExcelApp->Workbooks->Add(Type::Missing);

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; i++)
{
for (int j = 0; j < datagridview1->Columns->Count; j++)
            {
ExcelApp->Cells[i + 2, j + 1] = datagridview1->Rows[i]->Cells[j]->Value;
safe_cast<Range^>(ExcelApp->Cells[i + 2, j + 1]);    }
}
ExcelApp->ActiveWorkbook->SaveCopyAs(saveFileDialog1->FileName->ToString());
ExcelApp->ActiveWorkbook->Saved=true;
ExcelApp->Quit();
saveFileDialog1->Title=“另存为Excel文件”;
saveFileDialog1->FileName=“”;
saveFileDialog1->Filter=“Excel文件(2003)|*.xls | Excel文件(2007)|*.xlsx”;
如果(saveFileDialog1>ShowDialog()==System::Windows::Forms::DialogResult::OK){
Microsoft::Office::Interop::Excel::Application^ExcelApp=gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
Excel应用程序->工作簿->添加(类型::缺少);
对于(inti=1;iColumns->Count+1;i++)
{
ExcelApp->Cells[1,i]=datagridview1->Columns[i-1]->HeaderText;
}
对于(int i=0;iRows->Count;i++)
{
对于(int j=0;jColumns->Count;j++)
{
ExcelApp->Cells[i+2,j+1]=datagridview1->Rows[i]->Cells[j]->Value;
安全施法(ExcelApp->Cells[i+2,j+1]);]
}
ExcelApp->ActiveWorkbook->SaveCopyAs(saveFileDialog1->FileName->ToString());
ExcelApp->ActiveWorkbook->Saved=true;
ExcelApp->Quit();