<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
	
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


 
	
<meta>
      <topic id="textswriterguideinsert_graphic_fromchartxml" indexer="include"
             status="PUBLISH">
         <title xml-lang="en-US" id="tit">Inserting a Calc Chart into a Text Document</title>
         <filename>/text/swriter/guide/insert_graphic_fromchart.xhp</filename>
      </topic>
   </meta>
   <body>
<bookmark xml-lang="en-US" branch="index" id="bm_id3152999"><bookmark_value>charts;copying from Calc into Writer</bookmark_value>
      <bookmark_value>copying; charts from $[officename] Calc</bookmark_value>
      <bookmark_value>text documents;inserting Calc charts</bookmark_value>
</bookmark>
<paragraph xml-lang="en-US" id="hd_id3152999" role="heading" level="1" l10n="U" oldref="1"><variable id="insert_graphic_fromchart"><link href="text/swriter/guide/insert_graphic_fromchart.xhp" name="Inserting a Calc Chart into a Text Document">Inserting a Calc Chart into a Text Document</link>
</variable></paragraph>
      <paragraph xml-lang="en-US" id="par_id3155890" role="paragraph" l10n="CHG" oldref="16">You can insert a copy of a chart that is not updated when you modify the chart data in the spreadsheet.</paragraph>
      <list type="ordered">
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3149054" role="listitem" l10n="U" oldref="3">Open the text document that you want to copy the chart to.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3155854" role="listitem" l10n="U" oldref="4">Open the spreadsheet containing the chart that you want to copy.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3153396" role="listitem" l10n="U" oldref="5">In the spreadsheet, click the chart. Eight handles appear.</paragraph>
         </listitem>
         <listitem>
            <paragraph xml-lang="en-US" id="par_id3153414" role="listitem" l10n="U" oldref="7">Drag the chart from the spreadsheet to the text document.</paragraph>
         </listitem>
      </list>
      <paragraph xml-lang="en-US" id="par_id3145102" role="paragraph" l10n="U" oldref="9">You can resize and move the chart in the text document as you would any object. To edit the chart data, double-click the chart.</paragraph>
      <embed href="text/shared/00/00000004.xhp#related"/>
      <embed href="text/swriter/guide/insert_graphic.xhp#insert_graphic"/>
      <embed href="text/swriter/guide/insert_graphic_dialog.xhp#insert_graphic_dialog"/>
      <embed href="text/swriter/guide/insert_graphic_gallery.xhp#insert_graphic_gallery"/>
      <embed href="text/swriter/guide/insert_graphic_scan.xhp#insert_graphic_scan"/>
      <embed href="text/swriter/guide/insert_graphic_fromdraw.xhp#insert_graphic_fromdraw"/>
      <embed href="text/shared/guide/insert_graphic_drawit.xhp#insert_graphic_drawit"/>
   </body>
</helpdocument>