Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Excel, как прочитать поле с датой / 3 сообщений из 3, страница 1 из 1
07.08.2006, 12:28
    #33902725
sanek842
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, как прочитать поле с датой
среда 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
07.08.2006, 19:07
    #33904065
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, как прочитать поле с датой
1) Читай не .Value2, а .Text
2) 38786 это количество дней прошедших с 1-го января 1900-го года. Можешь сам высчитывать.
...
Рейтинг: 0 / 0
08.08.2006, 06:26
    #33904419
sanek842
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, как прочитать поле с датой
спасибо
так оно и есть!
:)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Excel, как прочитать поле с датой / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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