Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++ / 6 сообщений из 6, страница 1 из 1
31.07.2012, 18:23
    #37899495
ssqqwweerrttyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
Здравствуйте

Подскажите, пожалуйста, как открыть документ, допустим, "c:\1.xls" , заполнить любую ячейку в нем, сохранить и закрыть документ?

Открыть сам Excel мне удалось
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include "stdafx.h"
#define _WIN32_DCOM

#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "C:\Program Files\Microsoft Office\OFFICE12\EXCEL.EXE" \
	rename("DialogBox","_DialogBox") \
	rename("RGB","_RGB") \
	exclude("I","IPicture")

using namespace Excel;
int main() 
{
	::CoInitialize(NULL);
	{
		_ApplicationPtr pApp("Excel.Application");
		pApp->Visible[0] = true;		
	}
	CoUninitialize();
}



Как занести текст в ячейку, вроде, знаю
Код: plaintext
1.
2.
3.
4.
5.
_WorkbookPtr  book  = excel->Workbooks;
//получаю первый лист
_WorksheetPtr sheet = book->Worksheets->Item[1L];		
// заполняю ячейку
sheet->Range["B2"]->Value2= "ТекстТекстТекст";



Но как отрыть документ, сохранить и закрыть нигде ничего не нашел.
спасибо.
...
Рейтинг: 0 / 0
01.08.2012, 16:23
    #37900684
ssqqwweerrttyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
и так со всем этим я разобрался:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
int _tmain(int argc, _TCHAR* argv[])
{
	// Инициализируем  COM 
	::CoInitialize(NULL);
	Excel::_ApplicationPtr pAppExcel;
	Excel::_WorkbookPtr pBook;

	//отурываем Excel
	HRESULT hRes = E_FAIL;
	hRes = pAppExcel.CreateInstance(L"Excel.Application");
	if ( FAILED(hRes) ) 	
		::MessageBox(NULL, "Excel не найден!", "Ошибка", MB_OK);			

	//делаем его видимым
	pAppExcel->Visible[0] = true;

	//открываем файл L"c:\1.xls"
	_variant_t  varOption(static_cast<long>(DISP_E_PARAMNOTFOUND), VT_ERROR);
	pBook = pAppExcel->Workbooks->Open(
		L"c:\\1.xls", 
		varOption,
		varOption,
		varOption,
		varOption,
		varOption,
		varOption,
		varOption,
		varOption,
		varOption,
		varOption,
		varOption,
		varOption);

	Excel::_WorksheetPtr pFirstsheet;
	//получаем первый лист 
	pFirstsheet = pBook->Worksheets->Item[1L];
	//делаем первый лист активным
	pFirstsheet->Activate();
	// заполняем ячейку "E17"
	pFirstsheet->Range["E17"]->Value2= "ТекстТекстТекст!";
	//или 
	//заполняем "E1"
	Excel::RangePtr pRange = pFirstsheet->Cells;
	Excel::RangePtr pCell;
	pCell = pRange->Item[1][5]; // E1
	pCell->Value2 = "Ячейка E1";
	
	//сохраняем документ
	pBook->Save();
	//закрываем документ
	pBook->Close();
	//закрываем Excel
	pAppExcel->Quit();

	// Закрываем COM 
	::CoUninitialize();



	return 0;
}



Но не знаю как найти последнюю заполненную ячейку и сразу после нее вставить свои данные
...
Рейтинг: 0 / 0
02.08.2012, 16:10
    #37902225
ssqqwweerrttyy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
Называется поговорил сам с собой))

Если кому интересно, как получить последнюю заполненную ячейку в столбце, то можно вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	//получеам первый лист
	Excel::_WorksheetPtr pFirstsheet = pBook->Worksheets->Item[1L];
	//получеам первую ячейку
	Excel::RangePtr pRange = pFirstsheet->Cells;

	Excel::RangePtr  pEndCelRow;
	pEndCelRow = pRange->GetRows();

	//получаем к-во строк 
	long lCountRows = 0; 
	lCountRows = pEndCelRow->Count;

	Excel::RangePtr pEndRange, pLastFilledRange;
	//последняя ячейка в столбце 1
	pEndRange = pRange->Item[lCountRows][1];
	//последняя заполненная ячейка
	pLastFilledRange = pEndRange->GetEnd(Excel::xlUp);
...
Рейтинг: 0 / 0
02.08.2012, 18:24
    #37902495
StKgn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
ещё вопросы есть?
...
Рейтинг: 0 / 0
02.08.2012, 19:11
    #37902554
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
Есть: Хто тут?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
17.04.2014, 11:02
    #38617266
boo1985
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
Помогите плиз!!! История такова: создал очень большую программу на Visual Studio C++ для контроля множества датчиков с ардуино. Год писал блин. Осталось написать только что бы после нажатия кнопки ОТЧЕТ открылся существующий excel файл с диска, в определенные ячейки записались данные из полей ввода текста win form и сохранить этот файл под другим именем. Проще говоря нужен пример winform visual studio C++ где 1 текстовое поле для ввода и 1 кнопка. Вводим текст и после нажатия на кнопку видим excel файл где в ячейке А1 записано то что ввели в winform. Самое бредовое что я все это сделал уже на Visualbasic но мне надо именно на Visual C++(т.к. остальная программа написана на С++). Или накрайняк помогите переконвертировать что ли.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++ / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]