static gboolean gsf_output_csv_write (GsfOutput *output, size_t num_bytes, guint8 const *data) { GsfOutputCsv *csv = GSF_OUTPUT_CSV (output); return gsf_output_write (csv->sink, num_bytes, data); }
static gboolean gsf_output_csv_seek (GsfOutput *output, gsf_off_t offset, GSeekType whence) { GsfOutputCsv *csv = GSF_OUTPUT_CSV (output); return gsf_output_seek (csv->sink, offset, whence); }
/** * stf_export_cell: * @stfe: an export options struct * @cell: the cell to write to the file * * Return value: return TRUE on success, FALSE otherwise. **/ static gboolean stf_export_cell (GnmStfExport *stfe, GnmCell *cell) { char const *text = NULL; char *tmp = NULL; gboolean ok; g_return_val_if_fail (stfe != NULL, FALSE); if (cell) { switch (stfe->format) { case GNM_STF_FORMAT_PRESERVE: text = tmp = gnm_cell_get_rendered_text (cell); break; default: case GNM_STF_FORMAT_AUTO: if (cell->value) { GODateConventions const *date_conv = workbook_date_conv (cell->base.sheet->workbook); GOFormat const *format = gnm_cell_get_format (cell); text = tmp = try_auto_date (cell->value, format, date_conv); if (!text) text = tmp = try_auto_float (cell->value, format, date_conv); if (!text) text = value_peek_string (cell->value); } break; case GNM_STF_FORMAT_RAW: if (cell->value) text = value_peek_string (cell->value); break; } } ok = gsf_output_csv_write_field (GSF_OUTPUT_CSV (stfe), text ? text : "", -1); g_free (tmp); return ok; }
/** * stf_export_sheet: * @stfe: an export options struct * @sheet: the sheet to export * * Writes the @sheet to the callback function * * Return value: returns TRUE on success, FALSE otherwise **/ static gboolean stf_export_sheet (GnmStfExport *stfe, Sheet *sheet) { int col, row; GnmRange r; GnmRangeRef *range; g_return_val_if_fail (stfe != NULL, FALSE); g_return_val_if_fail (IS_SHEET (sheet), FALSE); range = g_object_get_data (G_OBJECT (sheet->workbook), "ssconvert-range"); if (range) { Sheet *start_sheet, *end_sheet; GnmEvalPos ep; gnm_rangeref_normalize (range, eval_pos_init_sheet (&ep, sheet), &start_sheet, &end_sheet, &r); if (start_sheet != sheet) return TRUE; } else r = sheet_get_extent (sheet, FALSE, TRUE); for (row = r.start.row; row <= r.end.row; row++) { for (col = r.start.col; col <= r.end.col; col++) { GnmCell *cell = sheet_cell_get (sheet, col, row); if (!stf_export_cell (stfe, cell)) return FALSE; } if (!gsf_output_csv_write_eol (GSF_OUTPUT_CSV (stfe))) return FALSE; } return TRUE; }