Здравствуйте.Столкнулся с проблемой при переводе кода с Visual C# на Visual С++(CLI);
Требуется сделать экспорт БД в Excel;
Код:
using namespace System::Data::SqlClient;
using namespace Microsoft::Office::Interop::Excel;
namespace SD = System::Data;
namespace Excel = Microsoft::Office::Interop::Excel;
Code C#:
Код:
try{
ct.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM InfoSales", ct);
SD.DataTable tb = new SD.DataTable();
SqlDataReader reader = cmd.ExecuteReader();
tb.Load(reader);
Excel.Application exApp = new Excel.Application();
exApp.Visible = true;
exApp.Workbooks.Add();
Worksheet workSheet = (Worksheet)exApp.ActiveSheet;
int row = 2; //начать со второй строки.
String date = dateTimePicker1.Value.ToString("dd-MM-yyyy");
for (int i = 0; i < tb.Rows.Count; i++)
{
workSheet.Cells[row,1] = tb.Rows[i].Field<int>("Номер");
workSheet.Cells[row,2] = tb.Rows[i].Field<String>("Клиент");
workSheet.Cells[row,3] = tb.Rows[i].Field<String>("Продавец");
workSheet.Cells[row,4] = tb.Rows[i].Field<String>("Наименование");
workSheet.Cells[row,5] = tb.Rows[i].Field<DateTime>("Дата");
workSheet.Cells[row,6] = tb.Rows[i].Field<int>("Количество");
workSheet.Cells[row,7] = tb.Rows[i].Field<int>("Стоимость");
workSheet.Columns.AutoFit();
++row;
}
string pathToXmlFile;
pathToXmlFile = Environment.CurrentDirectory + "\\" + ""+date+".xls";
workSheet.SaveAs(pathToXmlFile);
exApp.Quit();
ct.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
ct.Close();
}
На C# выполняется все как положено,а мне нужно перевести код на Visual С++(CLI):
Код:
ct->Open();
SqlCommand ^cmd = gcnew SqlCommand("SELECT * FROM InfoSales", ct);
SD::DataTable ^tb = gcnew SD::DataTable();
SqlDataReader ^reader = cmd->ExecuteReader();
tb->Load(reader);
Excel::Application^ exApp = gcnew Excel::ApplicationClass();
exApp->Visible = true;
exApp->Workbooks->Add(Type::Missing);
Worksheet ^workSheet = dynamic_cast<Excel::Worksheet^>(exApp->ActiveSheet);
int row = 2; //начать со второй строки.
String ^date = dateTimePicker1->Value.ToString("dd-MM-yyyy");
for (int i = 0; i < tb->Rows->Count; i++)
{
workSheet->Cells[row, 1] = tb->Rows[i]->Field(int)("Номер");//--------------------------------Ошибка здесь
workSheet->Cells[row, 2] = tb->Rows[i]->Field(String ^)("Клиент");
workSheet->Cells[row, 3] = tb->Rows[i]->Field(String ^)("Продавец");
workSheet->Cells[row, 4] = tb->Rows[i]->Field(String ^)("Наименование");
workSheet->Cells[row, 5] = tb->Rows[i]->Field(DateTime)("Дата");
workSheet->Cells[row, 6] = tb->Rows[i]->Field(int)("Количество");
workSheet->Cells[row, 7] = tb->Rows[i]->Field<int>("Стоимость");
workSheet->Cells[row, 7] = tb->Rows[i]->Field<int>("Стоимость");
workSheet->Columns->AutoFit();
++row;
}
String ^ pathToXmlFile;
pathToXmlFile = Environment::CurrentDirectory + "\\" + "" + date + ".xls";
workSheet->SaveAs(pathToXmlFile);//------------------------Ошибка здесь
exApp->Quit();
ct->Close();
}
catch (Exception ^ ex)
{
MessageBox::Show(ex->Message, "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Error);
ct->Close();
}
Код не принимает шаблон Field,читал на msdn, ничего подходящего не смог создать.Прошу помочь,может кто уже сталкивался с данной проблемой.