powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Excel, как прочитать поле с датой
3 сообщений из 3, страница 1 из 1
Excel, как прочитать поле с датой
    #33902725
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
среда MS VC++ 6.0
читаю excel файл tst.xls с исп. директивы #import
В ячейке A1 просто текст, а в ячейке B1 дата 10.03.2006
При чтении ячейки с датой (B1) считывается число 38786, а хотелось бы получить строковое значение 10.03.2006

исх. код.
Код: 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.
// tstxls.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <ole2.h>
#include <stdio.h>
//#include <windows.h>

#pragma warning (disable: 4146   4192   4786   4081 )
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL" 
#import "c:\\Program Files\\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.olb" 
#import "c:\Program Files\Microsoft Office\Office10\MSWORD.olb" rename("ExitWindows","ExitWindowsEx")
#import "c:\Program Files\Microsoft Office\Office10\excel.exe" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") \
         rename("DocumentProperties", "DocumentPropertiesXL") exclude("IFont","IPicture")

void dump_com_error(_com_error &e)
{
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());

    printf("Code = %08lx\nCode meaning = %s\nSource = %s\nDescription = %s\n", 
		e.Error(),e.ErrorMessage(),(LPCTSTR) bstrSource,bstrDescription);	
}

struct StartOle {
    StartOle() { CoInitialize(NULL); }
    ~StartOle() { CoUninitialize(); }
} _inst_StartOle;



int main(int argc, char* argv[])
{
	using namespace Excel;

	char ceilA1[ 50 ];
	char ceilB1[ 50 ];
	char StrFilePath[ 100 ] = "C:\\tst.xls";


    try {
		_ApplicationPtr pApp(L"Excel.Application");
		
		_WorkbookPtr  pBook  = pApp->Workbooks->Open(_bstr_t(StrFilePath));
		_WorksheetPtr pSheet = pBook->GetActiveSheet();

		strcpy(ceilA1,(_bstr_t)pSheet->Range["A1"]->Value2);
		strcpy(ceilB1,(_bstr_t)pSheet->Range["B1"]->Value2);

		pBook->Close();
		pApp->Quit();
    } catch(_com_error &e) {
    dump_com_error(e);
    }


	printf("%s,%s\n",ceilA1,ceilB1);
	return  0 ;
}

...
Рейтинг: 0 / 0
Excel, как прочитать поле с датой
    #33904065
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Читай не .Value2, а .Text
2) 38786 это количество дней прошедших с 1-го января 1900-го года. Можешь сам высчитывать.
...
Рейтинг: 0 / 0
Excel, как прочитать поле с датой
    #33904419
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
так оно и есть!
:)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Excel, как прочитать поле с датой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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