How to modify SummaryInformation stream of existing Excel



Hi all,

I'm trying to modify the SummaryInformation stream of an existing OLE file with libgsf. The following code does it right, but deletes all other streams:

bool SetStreamGSF(string filepath, string streamName, string & contents)
{
    bool success = false;
    GsfOutput  *output = NULL, *stream = NULL;
    GsfOutfile *outfile = NULL;
    GError *err = NULL;

    output = gsf_output_stdio_new (filepath.c_str(), &err);
    if (output == NULL) {goto SetStreamGSF_end;};
   
    outfile = gsf_outfile_msole_new (output);
    if (outfile == NULL) {goto SetStreamGSF_end;};
       
    stream = gsf_outfile_new_child (outfile, streamName.c_str(), false);
    if (stream == NULL) {goto SetStreamGSF_end;};

    if(!gsf_output_write (stream, contents.size(), (guint8 *) contents.data())) {goto SetStreamGSF_end;};

    success = true;

SetStreamGSF_end:
   
    if(stream) {gsf_output_close(stream); g_object_unref (G_OBJECT (stream)); }
    if(outfile) {gsf_output_close (GSF_OUTPUT(outfile)); g_object_unref (G_OBJECT (outfile));}
    if(output) {g_object_unref (G_OBJECT (output));}
    return success;
}

I checked all sample tests in libgsf, and looked for documentation, but I didn't find the proper way to replace a stream in an OLE file without deleting other streams. Does anyone know how to do it?

Regards.
Jose


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]