private: System::Void btnExcel_Click(System::Object^ sender, System::EventArgs^ e)
{
//创建报表
Microsoft::Office::Interop::Excel::Application^ exApp = gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
Microsoft::Office::Interop::Excel::Workbook^ exWb = exApp->Workbooks->Add(Type::Missing);
Microsoft::Office::Interop::Excel::Worksheet^ exWs = (Microsoft::Office::Interop::Excel::Worksheet^)exWb->Worksheets[1];
try
{
exApp->Visible = false;
exApp->DisplayAlerts = false;
exApp->AlertBeforeOverwriting = true;
exWb->SaveAs("E:\Office2019\MyProject", Missing::Value, Missing::Value, Missing::Value, Missing::Value, Missing::Value,
Microsoft::Office::Interop::Excel::XlSaveAsAccessMode::xlNoChange, Missing::Value, Missing::Value, Missing::Value,
Missing::Value, Missing::Value);
exWb = nullptr;
exApp->Quit();
exApp = nullptr;
}
catch (Exception^ err)
{
MessageBox::Show("Excel操作出错!错误原因:" + err->Message, "提示信息",
MessageBoxButtons::OK, MessageBoxIcon::Information);
}
//存入数据
for (int i = 0; i < myTable->Columns->Count; i++)
{
exWs->Cells[1, i + 1] = myTable->Columns[i]->ColumnName;
}
for (int j = 0; j < myTable->Rows->Count; j++)
{
for (int k = 0; k < myTable->Columns->Count; k++)
{
exWs->Cells[j + 2, k + 1] = myTable->Rows[j][k]; /********此处有错,无法使用给定参数列表调用函数*************/
}
}
/**********************************************
String^ filepath = "E:\\Office2019\\MyProject";
String^ commandText = "SELECT* INTO[EXCEL 8.0; DATABASE = E:\Office2019\MyProject.xlsx].sheet3 FROM Sensor;";
String^ commandText2 = "INSERT INTO [sheet1$](Temperature1,Humidity1) VALUES(22.3,68.3)";
DoSql(commandText2, filepath);
//Access数据导出Excel
OleDbConnection^ conn = gcnew OleDbConnection();
try
{
SaveFileDialog^ saveFile = gcnew SaveFileDialog();
saveFile->Filter = ("Excel文件(*.xls)|*.xls");
if (saveFile->ShowDialog() == System::Windows::Forms::Form::DialogResult);//ok
{
String^ filename = saveFile->FileName;
if (System::IO::File::Exists(filename))
{
System::IO::File::Delete(filename);
}
int index = filename->LastIndexOf("//");
filename = filename->Substring(index + 1);
String^ sql = "select top 65535* into [Excel 8.0;database=" + filename + "].[用户信息] from Users2";
conn->ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + System::Windows::Forms::Application::StartupPath + "//Appdata,mdb";
OleDbCommand^ com = gcnew OleDbCommand(sql, conn);
conn->Open();
com->ExecuteNonQuery();
MessageBox::Show("导出数据成功", "导出数据", MessageBoxButtons::OK, MessageBoxIcon::Information);
}
}
catch (Exception^ err)
{
MessageBox::Show(err->ToString());
}
finally
{
conn->Close();
}
***************************************/
exApp->Visible = true; //可视
}
excel的位数和你的C++程序的是否一致,excel的com重新引用下。
应该是book或者sheet的名称调用错了