[gnumeric] Import sheet objects text from xlsx
- From: Jean Bréfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Import sheet objects text from xlsx
- Date: Fri, 18 Mar 2011 11:58:47 +0000 (UTC)
commit 5ea1d0de43cf08b2beb0145ccc10c0f8271c9e3e
Author: Jean Brefort <jean brefort normalesup org>
Date: Fri Mar 18 12:58:07 2011 +0100
Import sheet objects text from xlsx
plugins/excel/ChangeLog | 7 +++++++
plugins/excel/xlsx-read-drawing.c | 11 +++++++----
plugins/excel/xlsx-write-drawing.c | 2 +-
3 files changed, 15 insertions(+), 5 deletions(-)
---
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 542b8d9..5c87559 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,10 @@
+2011-03-18 Jean Brefort <jean brefort normalesup org>
+
+ * xlsx-read-drawing.c (xlsx_chart_text_start), (xlsx_chart_text): import
+ text in sheet filled objects.
+ * xlsx-write-drawing.c (xlsx_write_series_dim): don't export strings as
+ values.
+
2011-03-15 Jean Brefort <jean brefort normalesup org>
* xlsx-read-drawing.c (xlsx_draw_color_end): fixed some auto style issues.
diff --git a/plugins/excel/xlsx-read-drawing.c b/plugins/excel/xlsx-read-drawing.c
index d064024..2451c75 100644
--- a/plugins/excel/xlsx-read-drawing.c
+++ b/plugins/excel/xlsx-read-drawing.c
@@ -893,7 +893,7 @@ static void
xlsx_chart_text_start (GsfXMLIn *xin, G_GNUC_UNUSED xmlChar const **attrs)
{
XLSXReadState *state = (XLSXReadState *)xin->user_state;
- if (NULL == state->series) { /* Hmm, why? */
+ if (NULL == state->so && NULL == state->series) { /* Hmm, why? */
GogObject *label = gog_object_add_by_name (state->cur_obj,
(state->cur_obj == (GogObject *)state->chart) ? "Title" : "Label", NULL);
xlsx_chart_push_obj (state, label);
@@ -905,7 +905,10 @@ xlsx_chart_text (GsfXMLIn *xin, G_GNUC_UNUSED GsfXMLBlob *blob)
{
XLSXReadState *state = (XLSXReadState *)xin->user_state;
- if (NULL == state->series) {
+ if (state->so) {
+ if (IS_GNM_SO_FILLED (state->so))
+ g_object_set (G_OBJECT (state->so), "text", state->chart_tx, NULL);
+ } else if (NULL == state->series) {
if (state->cur_obj && state->chart_tx) {
GnmValue *value = value_new_string_nocopy (state->chart_tx);
GnmExprTop const *texpr = gnm_expr_top_new_constant (value);
@@ -1715,7 +1718,7 @@ GSF_XML_IN_NODE_FULL (START, DRAWING, XL_NS_SS_DRAW, "wsDr", GSF_XML_NO_CONTENT,
GSF_XML_IN_NODE (TX_RICH_R_PR, PR_P_PR_DEF_UFILLTX, XL_NS_DRAW, "uFillTx", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (TX_RICH_R_PR, PR_P_PR_DEF_ULNTX, XL_NS_DRAW, "uLnTx", GSF_XML_NO_CONTENT, NULL, NULL),
- GSF_XML_IN_NODE (TX_RICH_R, TX_RICH_R_T, XL_NS_DRAW, "t", GSF_XML_CONTENT, NULL, NULL),
+ GSF_XML_IN_NODE (TX_RICH_R, TX_RICH_R_T, XL_NS_DRAW, "t", GSF_XML_CONTENT, NULL, &xlsx_chart_text_content),
GSF_XML_IN_NODE (TEXT_PR_P, PR_P_PR, XL_NS_DRAW, "pPr", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (PR_P_PR, PR_P_PR_DEF, XL_NS_DRAW, "defRPr", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (PR_P_PR_DEF, PR_P_PR_DEF_CS, XL_NS_DRAW, "cs", GSF_XML_NO_CONTENT, NULL, NULL),
@@ -1735,7 +1738,7 @@ GSF_XML_IN_NODE_FULL (START, DRAWING, XL_NS_SS_DRAW, "wsDr", GSF_XML_NO_CONTENT,
GSF_XML_IN_NODE (CXN_SP, SP_XFRM_STYLE, XL_NS_SS_DRAW, "style", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (SHAPE_PR, SP_PR_PRST_GEOM, XL_NS_DRAW, "prstGeom", GSF_XML_NO_CONTENT, NULL, NULL),
- GSF_XML_IN_NODE (SHAPE, TX_BODY, XL_NS_SS_DRAW, "txBody", GSF_XML_NO_CONTENT, NULL, NULL),
+ GSF_XML_IN_NODE (SHAPE, TX_BODY, XL_NS_SS_DRAW, "txBody", GSF_XML_NO_CONTENT, &xlsx_chart_text_start, &xlsx_chart_text),
GSF_XML_IN_NODE (TX_BODY, LST_STYLE, XL_NS_DRAW, "lstStyle", GSF_XML_NO_CONTENT, NULL, NULL), /* 2nd Def */
GSF_XML_IN_NODE (TX_BODY, TX_BODY_PR, XL_NS_DRAW, "bodyPr", GSF_XML_NO_CONTENT, NULL, NULL),
GSF_XML_IN_NODE (TX_BODY, TEXT_PR_P, XL_NS_DRAW, "p", GSF_XML_NO_CONTENT, NULL, NULL), /* 2nd Def */
diff --git a/plugins/excel/xlsx-write-drawing.c b/plugins/excel/xlsx-write-drawing.c
index 3f78965..3b24f6f 100644
--- a/plugins/excel/xlsx-write-drawing.c
+++ b/plugins/excel/xlsx-write-drawing.c
@@ -100,7 +100,7 @@ xlsx_write_series_dim (XLSXWriteState *state, GsfXMLOut *xml, GogSeries const *s
parse_pos_init (&pp, (Workbook *)state->base.wb, NULL, 0,0 ),
state->convs);
gsf_xml_out_start_element (xml, name);
- gsf_xml_out_start_element (xml, (strcmp (name, "c:tx"))? "c:numRef": "c:strRef");
+ gsf_xml_out_start_element (xml, (strcmp (name, "c:tx") && strcmp (name, "c:cat"))? "c:numRef": "c:strRef");
gsf_xml_out_simple_element (xml, "c:f", str);
gsf_xml_out_end_element (xml);
/* FIXME: write values, they are mandatory, according to the schema */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]