<?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="textsharedguidedoc_openxml" indexer="include">
<title id="tit" xml-lang="en-US">Opening Documents</title>
<filename>/text/shared/guide/doc_open.xhp</filename>
</topic>
</meta>
<body>
<bookmark xml-lang="en-US" branch="index" id="bm_id3147834"><bookmark_value>opening; documents</bookmark_value>
<bookmark_value>documents; opening</bookmark_value>
<bookmark_value>files; opening</bookmark_value>
<bookmark_value>loading; documents</bookmark_value>
<bookmark_value>spreadsheets;creating/opening</bookmark_value>
<bookmark_value>presentations;creating/opening</bookmark_value>
<bookmark_value>FTP; opening documents</bookmark_value>
<bookmark_value>new documents</bookmark_value>
<bookmark_value>empty documents</bookmark_value>
<bookmark_value>text documents;creating/opening</bookmark_value>
<bookmark_value>drawings; creating/opening</bookmark_value>
<bookmark_value>HTML documents; new</bookmark_value>
<bookmark_value>formulas; new</bookmark_value>
</bookmark><comment>mw changed "tables;..." to "spreadsheets;..."</comment><comment>mw made one entry out of two for "spreadsheets;", "presentations;" and "text (documents);"</comment>
<paragraph role="heading" id="hd_id3147834" xml-lang="en-US" level="1" l10n="U" oldref="1"><variable id="doc_open"><link href="text/shared/guide/doc_open.xhp" name="Opening Documents">Opening Documents</link>
</variable></paragraph>
<paragraph role="heading" id="hd_id3147653" xml-lang="en-US" level="2" l10n="U" oldref="12">Opening an existing document</paragraph>
<list type="ordered">
<listitem>
<paragraph role="listitem" id="par_id3149398" xml-lang="en-US" l10n="CHG" oldref="2">Do one of the following:</paragraph>
<paragraph role="listitem" id="par_idN107A9" xml-lang="en-US" l10n="NEW">Choose <item type="menuitem">File - Open</item>
</paragraph>
<paragraph role="listitem" id="par_idN107AF" xml-lang="en-US" l10n="NEW">Click the <emph>Open</emph> icon on the Standard toolbar</paragraph>
<paragraph role="listitem" id="par_idN107B2" xml-lang="en-US" l10n="NEW">Press <switchinline select="sys"><caseinline select="MAC">Command</caseinline><defaultinline>Ctrl</defaultinline></switchinline>+O </paragraph>
<paragraph role="listitem" id="par_id3150275" xml-lang="en-US" l10n="U" oldref="3">The <link href="text/shared/01/01020000.xhp" name="Open">Open</link> dialog appears.</paragraph>
</listitem>
<listitem>
<paragraph role="listitem" id="par_id3149164" xml-lang="en-US" l10n="CHG" oldref="4">Select the file you want to open and click <emph>Open</emph>.</paragraph>
</listitem>
</list>
<paragraph role="heading" id="hd_id3149234" xml-lang="en-US" level="3" l10n="CHG" oldref="13">Restrict Files to Display</paragraph>
<paragraph role="paragraph" id="par_id3150985" xml-lang="en-US" l10n="CHG" oldref="14">To restrict the display of files in the <emph>Open</emph> dialog to a certain type select the corresponding <emph>File type</emph> from the list. Select <emph>All Files (*.*)</emph> to display all files.</paragraph>
<paragraph role="heading" id="hd_id4651326" xml-lang="en-US" level="3" l10n="NEW">Cursor Position</paragraph>
<paragraph role="paragraph" id="par_id5509201" xml-lang="en-US" l10n="NEW">In general, all documents open with the cursor at the start of the document. </paragraph>
<paragraph role="paragraph" id="par_id6594744" xml-lang="en-US" l10n="NEW">One exception appears when the author of a Writer text document saves and reopens a document: The cursor will be at the same position where it has been when the document was saved. This only works when the name of the author was entered in <emph><switchinline select="sys"><caseinline select="MAC">%PRODUCTNAME - Preferences</caseinline><defaultinline>Tools - Options</defaultinline></switchinline> - %PRODUCTNAME - User Data</emph>.</paragraph>
<list type="ordered">
<listitem>
<paragraph role="paragraph" id="par_id3422650" xml-lang="en-US" l10n="NEW">Press Shift+F5 to set the cursor to the last saved position.</paragraph>
</listitem>
</list>
<paragraph role="heading" id="hd_id3148453" xml-lang="en-US" level="2" l10n="U" oldref="17">Opening an Empty Document</paragraph>
<paragraph role="paragraph" id="par_id3147287" xml-lang="en-US" l10n="CHG" oldref="19">Click the <emph>New</emph> icon on the Standard bar or choose <emph>File - New</emph>. This opens a document of the document type specified.</paragraph>
<paragraph role="paragraph" id="par_id3153092" xml-lang="en-US" l10n="CHG" oldref="20">If you click the arrow next to the <emph>New</emph> icon, a submenu opens in which you can select another document type.</paragraph>
<paragraph role="heading" id="hd_id0820200803501358" xml-lang="en-US" level="2" l10n="NEW">System File Dialogs or %PRODUCTNAME Dialogs</paragraph>
<paragraph role="paragraph" id="par_id0820200803501356" xml-lang="en-US" l10n="NEW">On most operating systems, you can choose to use the system file dialogs or %PRODUCTNAME dialogs.</paragraph>
<list type="unordered">
<listitem>
<paragraph role="paragraph" id="par_id0820200803501429" xml-lang="en-US" l10n="NEW">Choose <item type="menuitem"><switchinline select="sys"><caseinline select="MAC">%PRODUCTNAME - Preferences</caseinline><defaultinline>Tools - Options</defaultinline></switchinline> - %PRODUCTNAME - General</item> to switch the type of open/save dialogs.</paragraph>
</listitem>
</list>
<paragraph role="paragraph" id="par_id0820200803501449" xml-lang="en-US" l10n="NEW">The %PRODUCTNAME dialogs support file download and upload using secure https connections.</paragraph>
<paragraph role="heading" id="hd_id0820200803501453" xml-lang="en-US" level="2" l10n="NEW">Opening Files from a Web Server</paragraph>
<paragraph role="paragraph" id="par_id3153126" xml-lang="en-US" l10n="CHG" oldref="9">You can enter a URL in the <emph>File name</emph> box of the <emph>Open</emph> dialogs. The URL must start with file:/// or ftp:// or http://. </paragraph>
<paragraph role="paragraph" id="par_id0820200803501548" xml-lang="en-US" l10n="NEW">If you use the %PRODUCTNAME dialog, you can use the https:// prefix for a secure connection, and you can save a document on the web server.</paragraph>
<switch select="sys">
<case select="WIN">
<paragraph role="warning" id="par_idN107C4" xml-lang="en-US" l10n="NEW">When you open a file by a URL from the Windows file dialog, Windows will open a local copy of the file, located in the Internet Explorer cache. The %PRODUCTNAME file dialog opens a local copy of the file in the system's temp folder.</paragraph>
</case>
</switch>
<section id="relatedtopics">
<paragraph role="paragraph" id="par_id3148616" xml-lang="en-US" l10n="U" oldref="5"><link href="text/shared/01/01020000.xhp" name="File - Open">File - Open</link></paragraph>
<embed href="text/shared/00/00000021.xhp#xmlformat"/>
<embed href="text/shared/guide/ms_user.xhp#ms_user"/>
</section>
</body>
</helpdocument>
