2016-04-06 15 views
0

をExcelにC++ \ CLIのDataGridViewの輸出は:私は、ファイルの場所を変更しようとするだけで、バックグラウンド・プロセスで別のMicrosoft Excelを追加し、saveFileDialogクラッシュExcelファイルを作成しないでください:私が持っているエラー.xlsファイル

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(); 

答えて

0

私は一度同様の問題を抱えていましたが、問題は行とセルにあなたの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();