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

Подскажите, пожалуйста, как открыть документ, допустим, "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
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
    #37900684
ssqqwweerrttyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и так со всем этим я разобрался:
Код: 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
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
    #37902225
ssqqwweerrttyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Называется поговорил сам с собой))

Если кому интересно, как получить последнюю заполненную ячейку в столбце, то можно вот так:
Код: 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
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
    #37902495
StKgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ещё вопросы есть?
...
Рейтинг: 0 / 0
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
    #37902554
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть: Хто тут?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
    #38617266
boo1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите плиз!!! История такова: создал очень большую программу на Visual Studio C++ для контроля множества датчиков с ардуино. Год писал блин. Осталось написать только что бы после нажатия кнопки ОТЧЕТ открылся существующий excel файл с диска, в определенные ячейки записались данные из полей ввода текста win form и сохранить этот файл под другим именем. Проще говоря нужен пример winform visual studio C++ где 1 текстовое поле для ввода и 1 кнопка. Вводим текст и после нажатия на кнопку видим excel файл где в ячейке А1 записано то что ввели в winform. Самое бредовое что я все это сделал уже на Visualbasic но мне надо именно на Visual C++(т.к. остальная программа написана на С++). Или накрайняк помогите переконвертировать что ли.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Открыть Excel-документ, ввести данные, сохранить и закрыть при помощи Visual С++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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