_variant_t vItem = pRange->Item[ iRow ][ iCol ]; [modified]
-
MsmVc wrote:
I think i need to identify data type of excel before format(Change).
Yes I guess that's right. Unfortunately I cannot help with that as I am not sure how to get the information from Excel as to what type of information is held in a particular cell. I suspect that there is no way; if you write a number in an Excel cell, you can format it any way you like. However, you are the only person that knows what that number represents, all Excel knows is how you want it to be displayed on the screen!
-
Good morning I agree with Richard. You know your excel document. so if you expect to find time cells inside, you should detect that when reading it. I think you could try to retreive from excel the cell format. detect the date time mode and react accordingly. if you cannot find the cell format then if i remeber well you can retreive the value of your cell as a string. in that case i would post analyze it and if something like "07:07:13" is detected i will do the tranformation for a time. bye the way did you try to analyze the type of your read vItem to see what is in the BSTR value for a date time cell ? Regards FRanck.
-
Good morning I agree with Richard. You know your excel document. so if you expect to find time cells inside, you should detect that when reading it. I think you could try to retreive from excel the cell format. detect the date time mode and react accordingly. if you cannot find the cell format then if i remeber well you can retreive the value of your cell as a string. in that case i would post analyze it and if something like "07:07:13" is detected i will do the tranformation for a time. bye the way did you try to analyze the type of your read vItem to see what is in the BSTR value for a date time cell ? Regards FRanck.
Good morning Thank for reply. i will do the tranformation a time I am waiting for you response. BSTR value for a date time cell ? i try to do that but didn't find through this code.
_variant_t vItem = pRange->Item[ 1 ][ iColumn ];
COleDateTime dt; switch (vItem.vt ) { case VT\_DATE: { dt = vItem.date; break; } case VT\_R8: {
AfxMessageBox("dOUBLE");
break; } case VT\_BSTR: { \_bstr\_t bstrText( vItem ); //tmpData =(CString)val.bstrVal; // //strData+=tmpData; break; } case VT\_EMPTY: { TRACE("\\t\\t<empty>"); break; } }
cursor jump out side the case.
-
Good morning Thank for reply. i will do the tranformation a time I am waiting for you response. BSTR value for a date time cell ? i try to do that but didn't find through this code.
_variant_t vItem = pRange->Item[ 1 ][ iColumn ];
COleDateTime dt; switch (vItem.vt ) { case VT\_DATE: { dt = vItem.date; break; } case VT\_R8: {
AfxMessageBox("dOUBLE");
break; } case VT\_BSTR: { \_bstr\_t bstrText( vItem ); //tmpData =(CString)val.bstrVal; // //strData+=tmpData; break; } case VT\_EMPTY: { TRACE("\\t\\t<empty>"); break; } }
cursor jump out side the case.
Hi If your switch detect nothing i guess it is because the date time is really stored as a double inside excel. Your call:
pRange->Item [1][iColumn]
always return the value as a double at least for date and time. To by-pass that i would try to retreive the Text of the cell which is what the cell show. Text if from VBA doc but it should exist the same entry point in automation. In that case i am pretty sure you will recieved the 10:23:00 value. In the web site above there is an explanation about how to translate an excel date time: http://www.cpearson.com/excel/datetime The last soulution: If your date time cell is at a fixed place then just retrieve the value and translate as explain in the above link. Regards Franck
-
Hi If your switch detect nothing i guess it is because the date time is really stored as a double inside excel. Your call:
pRange->Item [1][iColumn]
always return the value as a double at least for date and time. To by-pass that i would try to retreive the Text of the cell which is what the cell show. Text if from VBA doc but it should exist the same entry point in automation. In that case i am pretty sure you will recieved the 10:23:00 value. In the web site above there is an explanation about how to translate an excel date time: http://www.cpearson.com/excel/datetime The last soulution: If your date time cell is at a fixed place then just retrieve the value and translate as explain in the above link. Regards Franck
-
i think it's my fault to not describe proper. Date and time cell is not fixed.If i know this cell have date time then i easy convert it. My problem is how to know data time format.
Hi I think like you do yourself when you watch an excel spread sheet. Either you retrieve the Text dispalyed by the cell and you recognize that it is a time. or you right click on the cell and look at the format of the cell. and you see something like dd:mm:ss Right now in your code you just query the double value of the cell it is not enough. You have to explore your cell deeper in order to be able to make a decision. To do that you can: Getting the STRING/TEXT displayed by the cell. and or the FORMAT associated with the cell. Regards.
-
Hi I think like you do yourself when you watch an excel spread sheet. Either you retrieve the Text dispalyed by the cell and you recognize that it is a time. or you right click on the cell and look at the format of the cell. and you see something like dd:mm:ss Right now in your code you just query the double value of the cell it is not enough. You have to explore your cell deeper in order to be able to make a decision. To do that you can: Getting the STRING/TEXT displayed by the cell. and or the FORMAT associated with the cell. Regards.
Respected Sir i know that all things to check right click on cell get format. explore your cell deeper in order to be able to make a decision i am same thing last 3 or 4 post.I don't have idea to got the cell format.Try to understand my problem.Plz help me
-
Respected Sir i know that all things to check right click on cell get format. explore your cell deeper in order to be able to make a decision i am same thing last 3 or 4 post.I don't have idea to got the cell format.Try to understand my problem.Plz help me
code bellow will return you something like: "12:56:32" for a cell containing time.
Excel::RangePtr pRange = pSheet->GetRange( _bstr_t(_T("A1") ) );
if ( pRange == NULL ){
return;
}_bstr_t sText= pRange->GetText(); it exist also something called CellFormat. but i cannot find how to call it. Sorry for the short answer but i do not have good code sample with me right now. regards
-
Respected Sir i know that all things to check right click on cell get format. explore your cell deeper in order to be able to make a decision i am same thing last 3 or 4 post.I don't have idea to got the cell format.Try to understand my problem.Plz help me
i wanted to type
Excel::RangePtr pRange = pSheet->GetRange( _bstr_t(_T("A1") ) );
if ( pRange == NULL ){
return;
}_bstr_t sText= pRange->GetText();
-
i wanted to type
Excel::RangePtr pRange = pSheet->GetRange( _bstr_t(_T("A1") ) );
if ( pRange == NULL ){
return;
}_bstr_t sText= pRange->GetText();