Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2015, 01:12   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию Работа с Excel [Visual C++/C#]

Здравствуйте.Столкнулся с проблемой при переводе кода с 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, ничего подходящего не смог создать.Прошу помочь,может кто уже сталкивался с данной проблемой.

Последний раз редактировалось spectrum988; 07.05.2015 в 01:15.
spectrum988 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel и Visual Studio Фатима2811 Помощь студентам 0 11.05.2014 14:00
Excel и Visual C++ Barkulab Microsoft Office Excel 2 02.12.2011 17:58
Работа с Visual Basic Editor в Excel. Muaxaxa Помощь студентам 2 14.11.2011 16:43
Excel и Visual C++ .NET tall Visual C++ 0 28.10.2010 20:38