Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[OLE Excel] zapisywanie pliku

Ostatnio zmodyfikowano 2013-04-16 13:59
Autor Wiadomość
Antheramis
Temat założony przez niniejszego użytkownika
[OLE Excel] zapisywanie pliku
» 2013-04-12 11:17:43
Cześć

Niżej mam fragment kodu programu z którym się nieco męczę. Praca na samym Excelu nie sprawia mi problemu, ale chciałbym otworzyć plik Baza.xls i zapisać go np pod nazwą abc.xls. Zaznaczam, że ważne dla mnie jest by Baza.xls nadal byłą w tym samym folderze.
Nie chodzi mi o bazę danych - mam do przerobienia około 1400 exceli i do szczęścia brakuje mi wiedzy jak zapisać zmieniony plik excela pod inną nazwą niż się go otworzyło. Dziękuje z góry za pomoc.

C/C++
CApplication oExcel;
COleException e;
COleVariant covOptional( DISP_E_PARAMNOTFOUND, VT_ERROR );
COleVariant covTrue(( short ) TRUE ), covFalse(( short ) FALSE );

if( !oExcel.CreateDispatch( L"Excel.Application", & e ) )
{
    e.ReportError();
    return;
}
oExcel.put_Visible( TRUE );

CWorkbooks oBooks = oExcel.get_Workbooks();
CWorkbook oBook = oBooks._Open( L"d:\\zsrk\\baza.xls", //nazwa pliku bazowego
covOptional, // UpdateLinks,
covFalse, // ReadOnly,
covOptional, // Format,
covOptional, // Password,
covOptional, // WriteResPassword,
covTrue, // IgnoreReadOnlyRecommended,
covOptional, // Origin,
covOptional, // Delimiter,
covOptional, // Editable,
covOptional, // Notify,
covOptional, // Converter,
covOptional // AddToMru, 
);

CWorksheets oSheets = oBook.get_Worksheets();
CWorksheet oSheet = oSheets.get_Item( COleVariant(( short ) 1 ) );
CRange oRange = oSheet.get_Cells();
CFont0 font;


COleVariant nip;
char * bufNIP[ 50 ];
CString tmp_nip = L" ABC ";
CString t;
CString p = L"P";
std::string * c;
CString l_JG = L"3001";

tmp_nip = oRange.get_Item( COleVariant(( short ) 2 ), COleVariant(( short ) 32 ) );
t = tmp_nip.GetString();
tmp_nip = l_JG.Left( 3 ) + L"-" + l_JG.Right( 1 ) + t.Right( 8 );

oRange.put_Item( COleVariant(( short ) 2 ), COleVariant(( short ) 32 ), COleVariant(( CString ) tmp_nip.GetString() ) );

oBook.Close( covTrue, COleVariant( L"D:\\zsrk\\abc.xls" ), COleVariant(( long ) oExcel.get_Workbooks() ) );
oSheet.ReleaseDispatch();
oSheets.ReleaseDispatch();
oRange.ReleaseDispatch();
oBooks.Close();
oExcel.ReleaseDispatch();
P-80428
DejaVu
» 2013-04-12 16:03:44
Jeżeli już publikujesz kod/cokolwiek innego na forum to dostosuj język do kultury. Takie posty zazwyczaj są usuwane zamiast poprawiane, więc miej to na uwadze w przyszłości.

/edit:
Poza tym pytanie raczej brzmi czy chcesz modyfikować plik czy też go skopiować. Jeżeli chcesz go tylko i wyłącznie skopiować to nie potrzebujesz do szczęścia żadnego OLE tylko zwykłe, binarne kopiowanie plików.

/edit2:
Dodam jeszcze, że jest zarówno metoda Save jak również SaveAs w klasie CWorkbooks.
P-80454
Antheramis
Temat założony przez niniejszego użytkownika
» 2013-04-16 13:59:29
Przepraszam za moje pismo.

Dziękuję. za pomoc, nie wiem czemu nie zauważyłem tych metod.
 
P-80642
« 1 »
  Strona 1 z 1