精华内容
下载资源
问答
  • 通过freemarker制作word比较简单 步骤:制作word模板。制作方式是:将模板word保存成为xml----在...模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${
    

    通过freemarker制作word比较简单

    步骤:制作word模板。制作方式是:将模板word保存成为xml----xmlword模板中添加相应的标记----xmlword文件的后缀名改成ftl文件(要注意的是生成xml格式要是2003格式的xml,也就是说拿到的word模板得是2003格式的,否则用wps打开word将会出现问题)

     

    详细步骤如下:

    1. 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(site.wzmc)?default(“”)}标识当网站名称为空的时候显示空值,如果这里如果不做控制,在实际项目中会显示错误!

    另外要注意的是:

    一、不要直接在word中替换掉文字的方式添加标记,这种会有问题。

    二、不要使用Eclipsexml文件进行格式化,这种生成word的时候会提示文档有问题。解决这个的问题是通过firstobjectwordxml进行格式化,对xml进行编辑。(使用firstobject打开带有中文文件名的xml文件的时候,会出现问题,建议使用英文word文档名称),或者使用XMLViewer

    三、firstobject下载地址:http://www.firstobject.com/dn_editor.htm

    其中,要想软件能够格式化xml代码,需要进行设置,设置方式是:打开firstobject----Tools-----Preferences------Format-----Tabs

    点击Indent,结果xml变成了有格式化的,效果图如下:

     

    常见标签:

    行标记:

    <w:p w:rsidR="00790C22"w:rsidRPr="00C07F75" w:rsidRDefault="00790C22"w:rsidP="004018B7">

     

    标识是一个表格的标签

    <w:tbl></w:tb1>

     

    表格行:

    <w:trw:rsidR="00790C22" w:rsidRPr="00C07F75"w:rsidTr="004018B7"></w:tr>

     

    表格中的单元格:

    <w:tc></w:tc>

     

     

    循环输出数据的方式

    <#list problemInfoInterview as problemInfo>

                     <w:tbl>

                        <w:tblPr>

                            <w:tblW w:w="0" w:type="auto"/>

                            <w:tblBorders>

                               <w:top w:val="single" w:sz="4" w:space="0" w:color="auto"/>

                               <w:left w:val="single" w:sz="4" w:space="0" w:color="auto"/>

                               <w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/>

                               <w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/>

                               <w:insideH w:val="single" w:sz="4" w:space="0" w:color="auto"/>

                               <w:insideV w:val="single" w:sz="4" w:space="0" w:color="auto"/>

                            </w:tblBorders>

                            <w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>

                        </w:tblPr>

                        <w:tblGrid>

                            <w:gridCol w:w="2235"/>

                            <w:gridCol w:w="6287"/>

                        </w:tblGrid>

                        <w:tr w:rsidR="00790C22" w:rsidRPr="00C07F75" w:rsidTr="004018B7">

                            <w:tc>

                               <w:tcPr>

                                   <w:tcW w:w="2235" w:type="dxa"/>

                                   <w:shd w:val="clear" w:color="auto" w:fill="auto"/>

                                   <w:vAlign w:val="center"/>

                               </w:tcPr>

                               <w:p w:rsidR="00790C22" w:rsidRPr="00C07F75" w:rsidRDefault="00790C22" w:rsidP="004018B7">

                                   <w:pPr>

                                      <w:jc w:val="center"/>

                                      <w:rPr>

                                          <w:rFonts w:ascii="Times New Roman" w:eastAsia="黑体" w:hAnsi="Times New Roman"/>

                                          <w:sz w:val="24"/>

                                          <w:szCs w:val="24"/>

                                      </w:rPr>

                                   </w:pPr>

                                   <w:r>

                                      <w:rPr>

                                          <w:rFonts w:ascii="Times New Roman" w:eastAsia="黑体" w:hAnsi="Times New Roman" w:hint="eastAsia"/>

                                         <w:sz w:val="24"/>

                                          <w:szCs w:val="24"/>

                                      </w:rPr>

                                      <w:t>问题名称</w:t>

                                   </w:r>

                               </w:p>

                            </w:tc>

                            <w:tc>

                               <w:tcPr>

                                   <w:tcW w:w="6287" w:type="dxa"/>

                                   <w:shd w:val="clear" w:color="auto" w:fill="auto"/>

                                   <w:vAlign w:val="center"/>

                               </w:tcPr>

                               <w:p w:rsidR="00790C22" w:rsidRPr="00C07F75" w:rsidRDefault="00790C22" w:rsidP="004018B7">

                                   <w:pPr>

                                      <w:jc w:val="left"/>

                                      <w:rPr>

                                          <w:rFonts w:ascii="Times New Roman" w:eastAsia="宋体" w:hAnsi="Times New Roman"/>

                                          <w:sz w:val="24"/>

                                          <w:szCs w:val="24"/>

                                      </w:rPr>

                                   </w:pPr>

                                                                                    <w:r>

                                      <w:rPr>

                                          <w:rFonts w:ascii="Times New Roman" w:eastAsia="宋体"

                                             w:hAnsi="Times New Roman" w:hint="eastAsia" />

                                          <w:sz w:val="24" />

                                          <w:szCs w:val="24" />

                                      </w:rPr>

                                      <w:t>${(problemInfo.problemName)?default("")}</w:t>

                                   </w:r>

                               </w:p>

                            </w:tc>

                        </w:tr>

                        

     

                        这里面的行删除

     

                     </w:tbl>

                                                <w:p w:rsidR="007F35A8" w:rsidRPr="007F35A8" w:rsidRDefault="007F35A8" w:rsidP="007F35A8" />

                                                </#list>

     

    另外,往文档中插入图片的时候,在做模板的时候要往模板中插入一个图片,然后打开文档,然后替换掉base64转码的图片部分。

     

    1. 将图片资源变成base64加密后的图片的代码

    将图片转成base64串的方式:

    publicstatic String getImageString(String fileName)throws IOException {

         InputStream in =null;

         byte[] data =null;

         try {

            in =new FileInputStream(fileName);

            data =newbyte[in.available()];

            in.read(data);

            in.close();

         }catch (Exception e) {

            e.printStackTrace();

         }finally {

            if (in !=null){

               in.close();

            }

         }

         Base64Encoder encoder =new Base64Encoder();

         return data !=null ? encoder.encode(data) :"";

      }

    1. 下面是出word用的相关的类:

    读取路径用的TemplateUtil工具类

    package com.ucap.netcheck.utils;

     

    import java.io.File;

    import java.io.FileInputStream;

    import java.net.URL;

    import java.util.Properties;

     

    /**

     * @Title: TemplateUtil.java

     * @Package com.ucap.netcheck.utils

     * @Description:

     * @author

     * @date 2015-4-13下午9:07:58

     * @version V1.0

     */

    public class TemplateUtil {

       //模板所在的位置

       public static String reportTemplatePath;

       //模板的名称

       public static String templateFileName;

       

       static {

          URL resource = TemplateUtil.class.getClassLoader().getResource("template.properties");

          System.out.println(resource.getPath());

          

          File file = new File(resource.getPath());

          //生成文件输入流

          FileInputStream in = null;

          try {

              in = new FileInputStream(file);

          } catch (Exception e) {

             e.printStackTrace();

          }

          

          //生成properties对象

          Properties prop = new Properties();

          try {

              prop.load(in);

          } catch (Exception e) {

              e.printStackTrace();

          }

          

          reportTemplatePath = prop.getProperty("reportTemplatePath");

          templateFileName = prop.getProperty("templateFileName");

       }

       

       /*public static void main(String[] args) {

          System.out.println(TemplateUtil.reportTemplatePath);

       }*/

    }

    配置文件路径截图:

    FreeMarkerUtil工具类

    package com.ucap.netcheck.utils;

     

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStreamWriter;

    import java.io.Writer;

    import java.util.HashMap;

    import java.util.Map;

     

    import com.thoughtworks.xstream.core.util.Base64Encoder;

     

    import freemarker.template.Configuration;

    import freemarker.template.Template;

     

    /**

     *@Title: FreeMarkerUtil.java

     *@Package com.ucap.netcheck.utils

     *@Description: FreeMarker工具类

     *@authorZuoquan Tu

     *@date 2015-4-5下午6:02:11

     *@version V1.0

     */

    publicclass FreeMarkerUtil {

      privatestatic Configurationconfiguration =null;

      privatestatic Map<String, Template>allTemplates =null;

      

      static {

         configuration =new Configuration();

         configuration.setDefaultEncoding("utf-8");

         //configuration.setClassForTemplateLoading(FreeMarkerUtil.class,

         //   "../template");

         

         try {

            configuration.setDirectoryForTemplateLoading(

                   new File(TemplateUtil.reportTemplatePath));

         }catch (IOException e1) {

            e1.printStackTrace();

         }

         allTemplates =new HashMap<String, Template>();

         try {

           allTemplates.put("word",configuration.getTemplate(TemplateUtil.templateFileName));

         }catch (Exception e) {

            e.printStackTrace();

            thrownew RuntimeException(e);

         }

      }

      

      public FreeMarkerUtil() {

         

      }

      

      publicstatic File createDoc(Map<?, ?> dataMap,String type){

         String name ="temp" + (int) (Math.random() * 100000) +".doc";

         File f =new File(name);

         Template t =allTemplates.get(type);

         try {

            //这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word

            //文档会因为有无法识别的编码而无法打开

            Writer w =new OutputStreamWriter(new FileOutputStream(f),"utf-8");

            t.process(dataMap, w);

            w.close();

         }catch (Exception ex) {

            ex.printStackTrace();

            thrownew RuntimeException();

         }

         return f;

      }

     

      publicstatic String getImageString(String fileName)throws IOException {

         InputStream in =null;

         byte[] data =null;

         try {

            in =new FileInputStream(fileName);

            data =newbyte[in.available()];

            in.read(data);

            in.close();

         }catch (Exception e) {

            e.printStackTrace();

         }finally {

            if (in !=null){

               in.close();

            }

         }

         Base64Encoder encoder =new Base64Encoder();

         return data !=null ? encoder.encode(data) :"";

      }

    }

    WordController层的代码,并解决出word时中文文件名乱码的问题

    package com.ucap.netcheck.controller;

     

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.IOException;

    import java.io.InputStream;

    import java.net.URLEncoder;

    import java.util.Map;

     

    import javax.servlet.ServletOutputStream;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

     

    import org.apache.commons.lang.StringUtils;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.stereotype.Controller;

    import org.springframework.ui.Model;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RequestMethod;

     

    import com.ucap.netcheck.entity.Site;

    import com.ucap.netcheck.entity.User;

    import com.ucap.netcheck.service.IReport2WordService;

    import com.ucap.netcheck.service.ISiteService;

    import com.ucap.netcheck.utils.DateUtil;

    import com.ucap.netcheck.utils.FreeMarkerUtil;

     

    /**

     * @Title: Report2WordController.java

     * @Package com.ucap.netcheck.controller

     * @Description:生成word部分的Controller

     * @author Zuoquan Tu

     * @date 2015-4-12上午9:36:43

     * @version V1.0

     */

    @Controller

    @RequestMapping(value = "/reportToWord", method = { RequestMethod.GET,

                      RequestMethod.POST })

    public class Report2WordController {

     

            @Autowired

            private IReport2WordService report2WordService;

            @Autowired

            private ISiteService siteService;

     

            @RequestMapping(value = "/word")

            public String outWord(Model model, HttpServletRequest request,

                               HttpServletResponse response) throws Exception {

                      request.setCharacterEncoding("utf-8");

     

                      //获取innerUUIDtaskId

                      String siteCode = request.getParameter("innerUUID");

                      //获取taskId

                      Integer taskId = Integer.parseInt(request.getParameter("taskId"));

                      //获取用户的userId

                      User user = (User) request.getSession().getAttribute("user");

                      //通过下面的方式获得模板的参数

                      Site site = siteService.findSite(siteCode);

                      String webSiteName = site.getWzmc();

                      Map<String, Object> map = report2WordService.generateWordData(siteCode,

                                        taskId, user.getId());

     

                      //获取innerUUID,taskId

                      // Map<String, Object> map = new HashMap<String, Object>();

     

                      //获取innerUUID,taskId

                      // Map<String, Object> map = new HashMap<String, Object>();

                      // map.put("taskNum", "测试");

                      // map.put("tackRunNum", "测试2……rqwrqw");

                      // String imageStr = new FreeMarkerUtil().getImageString("D:/1.png");

                      // map.put("imgStr", imageStr);

                      //

                      // List<CheckService> newsList = new ArrayList<CheckService>();

                      // for (int i = 0; i < 10; i++) {

                      // CheckService checkService = new CheckService();

                      // checkService.setTaskRunNum(10);

                      // checkService.setTaskNum(1000);

                      // newsList.add(checkService);

                      // }

                      // map.put("newList", newsList);

     

                      this.generateWord(request,response, map, webSiteName);

     

                      return null;

            }

     

            @SuppressWarnings("static-access")

            private void generateWord(HttpServletRequest request,HttpServletResponse response,

                               Map<String, Object> map, String webSiteName)

                               throws FileNotFoundException, IOException {

                      File file = null;

                      InputStream fin = null;

                      ServletOutputStream out = null;

                      try {

                               //调用工具类WordGeneratorcreateDoc方法生成Word文档

                               file = new FreeMarkerUtil().createDoc(map, "word");

                               fin = new FileInputStream(file);

                               response.setCharacterEncoding("utf-8");

                               response.setContentType("application/msword");

                               //设置浏览器以下载的方式处理该文件默认名为下面的文件,按照时间来生成的一个文件名称

                               String longMsDateStr = DateUtil.getStringLongMsDate();

                               String fileName = webSiteName + "_" + longMsDateStr + ".doc";

                               //设置下载用的文件名

                               setFileDownloadHeader(request, response, fileName);

                               //response.addHeader("Content-Disposition", "attachment;filename=" + fileName);

     

                               out = response.getOutputStream();

                               byte[] buffer = new byte[512];

                               int bytesToRead = -1;

     

                               //通过循环将读入的Word文件的内容输出到浏览器中

                               while ((bytesToRead = fin.read(buffer)) != -1) {

                                        out.write(buffer, 0, bytesToRead);

                               }

                      } finally {

                               if (fin != null)

                                        fin.close();

                               if (out != null)

                                        out.close();

                               if (file != null)

                                        file.delete(); //删除临时文件

                      }

            }

     

            /**

             *根据当前用户的浏览器不同,对文件的名字进行不同的编码设置,从而解决不同浏览器下文件名中文乱码问题

             */

            public static void setFileDownloadHeader(HttpServletRequest request,

                               HttpServletResponse response, String fileName) {

                      final String userAgent = request.getHeader("USER-AGENT");

                      try {

                               String finalFileName = null;

                               if (StringUtils.contains(userAgent, "MSIE")) {

                                        // IE浏览器

                                        finalFileName = URLEncoder.encode(fileName, "UTF8");

                               } else if (StringUtils.contains(userAgent, "Mozilla")) {

                                        // google,火狐浏览器

                                        finalFileName = new String(fileName.getBytes(), "ISO8859-1");

                               } else {

                                        //其他浏览器

                                        finalFileName = URLEncoder.encode(fileName, "UTF8");

                               }

                               

                               //这里设置一下让浏览器弹出下载提示框,而不是直接在浏览器中打开

                               response.setHeader("Content-Disposition", "attachment; filename=\""

                                                  + finalFileName + "\"");

                      } catch (Exception e) {

                               e.printStackTrace();

                      }

            }

    }

    ServiceImpl层的实现类

    package com.ucap.netcheck.service.impl;

     

    import java.text.NumberFormat;

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

     

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.stereotype.Service;

     

    import com.ucap.netcheck.combination.beans.TargetTypeParentToChildBean;

    import com.ucap.netcheck.dao.IReport2WordDao;

    import com.ucap.netcheck.entity.CheckService;

    import com.ucap.netcheck.entity.MainPageScanFail;

    import com.ucap.netcheck.entity.MainPageScanResult;

    import com.ucap.netcheck.entity.ProblemInfo;

    import com.ucap.netcheck.entity.Site;

    import com.ucap.netcheck.entity.SiteService;

    import com.ucap.netcheck.service.CheckServiceService;

    import com.ucap.netcheck.service.IReport2WordService;

    import com.ucap.netcheck.service.ISingleRejectResultService;

    import com.ucap.netcheck.service.ISiteService;

    import com.ucap.netcheck.service.SiteServService;

    import com.ucap.netcheck.service.TargetTypeService;

    import com.ucap.netcheck.utils.DateUtil;

     

    /**  

     * @Title: Report2WordServiceImpl.java

     * @Package com.ucap.netcheck.service.impl

     * @Description:

     * @author 

     * @date 2015-4-12上午11:58:09

     * @version V1.0  

     */

    @Service

    public class Report2WordServiceImpl implements IReport2WordService {

     

            @Autowired

       private ISiteService siteService;

            @Autowired

            private CheckServiceService checkServiceService;

            @Autowired

            private IReport2WordDao report2WordDao;

            @Autowired

            private TargetTypeService targetTypeService;

            @Autowired

            private ISingleRejectResultService singleRejectResultService;

            @Autowired

            private SiteServService siteServService;

     

            /**

             * generateWordData(通过这个方法获得生成报告所需的数据)

             *

             * @Title: generateWordData

             * @Description:通过这个方法获得生成报告所需的数据

             * @param @return   返回所需的数据

             * @return Map<String,Object>   返回的数据

             * @throws

             */

            @Override

            public Map<String, Object> generateWordData(

                               String siteCode,Integer taskId,String userId) {

                      Map<String, Object> map = new HashMap<String, Object>();

                      //网站名称,首页网址,报告编号,报告日期

                      Site site = siteService.findSite(siteCode);

                      map.put("site", site);

                      //生成报告编号和报告日期

                      map.put("reportCode", DateUtil.getNowDateStr() + "_" + taskId);

                      map.put("reportDate", DateUtil.getYearMonthAndDay());

                      

                      //检查方法的数据,获得CheckService的值

                      //通过siteCode查找site_service

                      SiteService siteService = siteServService.findSiteService(siteCode);

                      CheckService checkService = report2WordDao.findCheckService(siteService.getServId());

                      map.put("checkService", checkService);

                      //设置开通时间的日期

                      map.put("checkServiceOpenTime", DateUtil.dateToStr(checkService.getOpenTime()));

                      //设置结束时间的日期

                      map.put("checkServiceCloseTime", DateUtil.dateToStr(checkService.getCloseTime()));

                      

                      return map;

            }

    }




    Ftl语法:


    一、判断listchannelUpdateResults是否为空(下面表示不为空的意思),判断list的大小是否大于某个值,注意加括号

    <#if channelUpdateResults??>

                                                                             <#if (channelUpdateResults?size>=10) >

                                                                                          未更新数量为“单项否决”。

                                                                                  </#if>

    </#if>

    二、list迭代

    <#list queryMainPageScanFailList as mainPageScanFail>

    </#list>

    四、迭代的时候输出序号

    ${( mainPageScanFail _index+1)?default("")}  其中

    五、if语句中取数组的值

    <#if deadUrl[0] == 1>                                                                                                      

                                                                                                 <#else>                                                                                                                                                                         </#if>

    六、<#assign>赋值,并且通过x_has_next来辨别当前项是否是序列的最后一项的布尔值。

    <#assign seq = ["winter", "spring", "summer", "autumn"]>

    <#list seq as x>

    ${x_index+ 1}. ${x}<#ifx_has_next>,</#if>

    </#list>

    七、解决出word中因为特殊字符“&”出现的问题,同时判断字符串为NULL和“”空字符串。如果在链接地址中出现了&字符,在生成的word会报错,解决办法是将这个特殊字符用“&amp;”替换掉,示例加链接的代码如下:

    <#if (channelUpdate.url)??>
               <w:hlink w:dest="${(channelUpdate.url)?replace('&','&amp;')}">
                <w:r wsp:rsidR="002F59FF" wsp:rsidRPr="002F59FF">
                 <w:rPr>
                  <w:rStyle w:val="ab"/>
                  <w:rFonts w:ascii="仿宋" w:fareast="仿宋" w:h-ansi="仿宋"/>
                  <wx:font wx:val="仿宋"/>
                  <w:sz w:val="24"/>
                  <w:sz-cs w:val="30"/>
                 </w:rPr>
                 <w:t>${(channelUpdate.url)?replace('&','&amp;')}</w:t>
                </w:r>
               </w:hlink>
                                                                                                       </#if>

      八、多次替换以及replace多次:

    ${(problemInfo.problemUrl)?replace("&","&amp;")?replace("<","&lt;")?replace(">","&gt;")}


    九:判断一个对象是否为空

    freemarker中显示某对象使用${name}.

     

    但如果name为null,freemarker就会报错。如果需要判断对象是否为空:

    <#if name??>

    ……

    </#if>

     

    当然也可以通过设置默认值${name!''}来避免对象为空的错误。如果name为空,就以默认值(“!”后的字符)显示。

     

    对象user,name为user的属性的情况,user,name都有可能为空,那么可以写成${(user.name)!''},表示user或者name为null,都显示为空。判断为空

    <#if (user.name)??>

    ……

    </#if>

    十:freemarker获取map中的值:

    第一种方式 
    <#list map?keys as itemkey>  
           < option value="${itemkey}" >  
                  ${map.get(itemkey)}  
         </option>  
    </#list>

    第二种方式     主意红色字体区分 
    <#list map.keySet() as itemkey>  
           < option value="${itemkey}" >  
            ${map.get(itemkey)}
         </option>  
    </#list>



    
    
    
    展开全文
  • 到微软网站下载以下工具: http://download.microsoft.com/download/6/9/E/69EA942D-4636-4350-A526-0BFD9771A12A/O2007Cnv.exe<br />安装之后,在word2003中就可以用文件-打开,文件类型选择word 2007 ...

    1.到微软网站下载以下工具:
    http://download.microsoft.com/download/6/9/E/69EA942D-4636-4350-A526-0BFD9771A12A/O2007Cnv.exe
    安装之后,在word2003中就可以用文件-打开,文件类型选择word 2007 document (*.docx),然后选择自己得文件就可以。这个软件微软刚发布,暂时只有英文版,但是一样可以打开中文文档。安装后,excel2003也可以打开excel2007的工作簿

    2.为了使Word2007文档能够在Word2003中打开和编辑,用户可以在安装Word2003的电脑中下载并安装Microsoft Office WordExcelPowerpoint2007文件格式兼容包....

    /uploads/soft/200904/1_18144608.rar

     

    如果您使用 Office XP、Office 2003 或 Office 2002 程序,且需要打开并保存 Microsoft Office 2007 格式的文档,则必须安装 Office 兼容包。此外,可能还需安装 Office 程序的其他更新(如果尚未安装)。

    注意:在未安装兼容包和更新的情况下,如果尝试通过使用 Office 程序的早期版本来使用 Microsoft Office 2007 文档,则您可能会遇到问题和错误,有关这类问题和错误的示例,请参阅“更多信息”部分。

    下载并安装兼容包

    要在 Office XP、Office 2003 和 Office 2000 中使用 Microsoft Office 2007 文档,则必须安装 Microsoft Office 兼容包。要查看更多信息并下载 Office 兼容包,请访问下面的 Microsoft 网站:

    http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466 (http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466)

    成功安装兼容包之后,请继续下一部分,以便安装计算机可能需要的任何其他 Office 程序更新。

    如果您收到错误,或兼容包未完成安装,请参阅“与支持部门联系”部分。

    下载并安装早期版本的 Office 程序的更新

    如果使用 Office XP、Office 2003 或 Office 2002 程序,则可能必须安装更新才能使用 Microsoft Office 2007 程序。如果尚未安装,请安装适当的更新。

    要检查是否已安装这些更新,请执行以下步骤:

    1. 单击“开始”,然后单击“运行”。
    2. 在“打开”框中,键入控件 appwiz.cpl,然后单击“确定”。
    3. 在“添加或删除程序”窗口中,请单击“更改或删除程序”。
    4. 请单击该窗口顶部旁边的“显示更新”,确保 Windows 更新出现在已安装程序的列表中。

    如果使用 Office 2003 程序,则必须安装以下更新:

    • 923097 (http://support.microsoft.com/kb/923097/ ) 2006 年 10 月 10 日版 Office 2003 更新说明 (EN)
    • 923272 (http://support.microsoft.com/kb/923272/ ) 2006 年 10 月 10 日版 Office 2003 安全更新说明
    • 923088 (http://support.microsoft.com/kb/923088/ ) 2006 年 10 月 10 日版 Excel 2003 安全更新说明
    • 923091 (http://support.microsoft.com/kb/923091/ ) 2006 年 10 月 10 日版 PowerPoint 2003 安全更新说明
    • 923094 (http://support.microsoft.com/kb/923094/ ) 2006 年 10 月 10 日版 Word 2003 安全更新说明

    如果使用 Office XP 程序,则必须安装以下更新:

    • 918420 (http://support.microsoft.com/kb/918420/ ) 2006 年 7 月 11 日版 Microsoft Excel 2002 安全更新说明
    • 917153 (http://support.microsoft.com/kb/917153/ ) 2006 年 7 月 11 日版 PowerPoint 2002 更新说明
    • 917347 (http://support.microsoft.com/kb/917347/ ) 2006 年 7 月 11 日版 Word 2002 更新说明

    如果使用 Office 2000,则无需安装任何更新。

    成功安装任何所需的更新之后,您已完成所有步骤。有关在 Office 程序早期版本中打开并保存 Microsoft Office 2007 文件的一些提示,请参阅下一部分“在早期的 Office 程序中使用 Microsoft Office 2007 文档”。

    如果您收到错误,或更新未完成,请参阅“与支持部门联系”部分。

    在早期的 Office 程序中使用 Microsoft Office 2007 文档

    安装所需的更新和兼容包之后,您便可在早期版本的 Office 程序中使用 Microsoft Office 2007 文档。

    Excel 2003 和 Excel 2002

    在 Excel 2003 和 Excel 2002 中,您现在可以创建、打开、编辑并保存以下 Excel 2007 文件格式:

    • Excel 工作簿(*.xlsx)
    • Excel 启用宏的工作簿(*.xlsm)
    • Excel 二进制工作簿(*.xlsb)
    • Excel 模板(*.xltx)
    • Excel 启用宏的模板(*.xltm)
    • Excel 加载宏(*.xlam)

    此外,您还可使用 Windows 资源管理器打开并保存 Excel 2007 格式文件。

    Excel 2000

    在 Excel 2000 中,您必须使用 Windows 资源管理器打开并保存 Excel 2007 文件。要在 Excel 2000 中打开 Excel 2007 文件,请执行以下步骤:

    1. 在 Windows 资源管理器中找到文件。
    2. 双击文件。

    注意:必须在计算机上安装 Excel 2000。如果还安装了其他版本的 Microsoft Excel,则文件可能会在与预期版本不同的 Excel 版本中打开。

    要将 Excel 2000 文件保存为 Excel 2007 文件,请按照下列步骤操作:

    1. 在 Windows 资源管理器中找到文件。
    2. 右键单击该文件,然后单击“另存为”。
    3. 在“另存为”对话框中,在“保存类型”框中单击以下一种 Excel 2007 文件格式,然后单击“保存”:
      • Microsoft Office Excel 2007 工作簿(*.xlsx)
      • Microsoft Office Excel 2007 启用宏的工作簿(*.xlsm)
      • Microsoft Office Excel 2007 二进制工作簿(*.xlsb)
    4. 完成保存后,单击“确定”。

    PowerPoint 2003 和 PowerPoint 2002

    在 PowerPoint 2003 和 PowerPoint 2002 中,您现在可以创建、打开、编辑并保存以下 PowerPoint 2007 文件格式:

    • PowerPoint 演示文稿(*.pptx)
    • 启用宏的 PowerPoint 演示文稿(*.pptm)
    • PowerPoint 模板 (*.potx)
    • PowerPoint 启用宏的模板 (*.potm)
    • PowerPoint 放映(*.ppsx)
    • 启用宏的 PowerPoint 放映(*.ppsm)

    此外,您还可使用 Windows 资源管理器打开并保存 PowerPoint 2007 格式文件。

    PowerPoint 2000

    在 PowerPoint 2000 中,您必须使用 Windows 资源管理器打开并保存 PowerPoint 2007 文档。要在 PowerPoint 2000 中打开 PowerPoint 2007 文档,请执行以下步骤:

    1. 在 Windows 资源管理器中找到文件。
    2. 双击文件。

    注意:必须在计算机上安装 PowerPoint 2000。如果还安装了其他版本的 Microsoft PowerPoint,则文件可能会在与预期版本不同的 PowerPoint 版本中打开。

    要将 PowerPoint 2000 文件保存为 PowerPoint 2007 文件,请按照下列步骤操作:

    1. 在 Windows 资源管理器中找到文件。
    2. 右键单击该文件,然后单击“另存为”。
    3. 在“另存为”对话框中,在“保存类型”框中单击以下一种 PowerPoint 2007 文件格式,然后单击“保存”:
      • Microsoft Office PowerPoint 2007 演示文稿(*.pptx)
      • Microsoft Office PowerPoint 2007 启用宏的演示文稿(*.pptm)
    4. 完成保存后,单击“确定”。

    Word 2003、Word 2002 和 Word 2000

    在 Word 2003、2002 和 2000 中,您现在可以创建、打开、编辑并保存以下 Word 2007 文件格式:

    • Word 文档(*.docx)
    • 启用宏的 Word 文档(*.docm)

    此外,您可以使用 Windows 资源管理器打开并保存 Word 2007 格式文件。

    在计算机尚未更新为与 Microsoft Office 2007 文档兼容的情况下,您可能会遇到的问题

    当您尝试在早期版本的 Office 程序中打开以 Microsoft Office 2007 某一种格式保存的文件时,您可能会遇到以下问题之一:

    • 如果计算机尚未更新并且您尚未安装 Office 兼容包,那么当您尝试打开文件时,将会收到下列错误消息之一,具体取决于所使用的程序。

      Word

      当您使用“打开”对话框,或当您使用拖放操作将文件移入所使用的 Word 版本中时,您将收到以下消息:
      请选择使文档可读的编码。
      在 Windows 资源管理器中双击文件时或者双击作为电子邮件附件的文件时,收到以下错误消息:
      Windows 不能打开此文件。
      Excel

      当您使用“打开”对话框,或当您使用拖放操作将文件移入所使用的 Excel 版本中时,您将收到以下错误消息:
      无法识别此文件的格式。
      在 Windows 资源管理器中双击文件时或者双击作为电子邮件附件的文件时,收到以下错误消息:
      Windows 不能打开此文件。
      PowerPoint

      当您使用“打开”对话框,或当您使用拖放操作将文件移入所使用的 PowerPoint 版本中时,您将收到以下错误消息:
      PowerPoint 无法打开“ filename”代表的文件类型
      在 Windows 资源管理器中双击文件时或者双击作为电子邮件附件的文件时,收到以下错误消息:
      Windows 不能打开此文件。
      要解决这些问题,请安装 Office 兼容包和针对您所用的 Office 程序版本的每个更新。
    • 如果计算机尚未更新,但安装了兼容包,则当您尝试打开文件时,将会收到一条错误消息,具体取决于所使用的程序。

      Word

      当您使用“打开”对话框,或当您使用拖放操作将文件移到所使用的 Word 版本中时,文件将正确地打开。当您在 Windows 资源管理器中双击文件时,文件将正确地打开。

      Excel

      当您使用“打开”对话框,或当您使用拖放操作将文件移入所使用的 Excel 版本中时,您将收到以下错误消息:
      无法识别此文件的格式。
      当您在 Windows 资源管理器中双击文件时,文件将正确地打开。

      PowerPoint

      当您使用“打开”对话框,或当您使用拖放操作将文件移入所使用的 PowerPoint 版本中时,您将收到以下错误消息:
      PowerPoint 无法从 filename 读取大纲。未安装该文件类型的文本转换程序。
      当您在 Windows 资源管理器中双击文件时,文件正确地打开。

      要解决这些问题,请安装针对您所用的 Office 程序版本的每个更新。
    • 如果计算机已被更新,但未安装 Office 兼容包,则当您尝试打开文件时,将会收到以下错误消息。
    展开全文
  • VC自动打开Word文档并打印

    千次阅读 2009-04-17 14:36:00
    VC自动打开Word文档并打印VC知识库出品 转载摘要这篇文章讲述了如何在Visual C++5.0或6.0中自动打开并打印Microsoft Word文档。更多信息你可以将文章中的代码拷贝到自己的MFC .cpp文件中的事件定义消息处理函数中去...

     

    VC自动打开Word文档并打印

    VC知识库出品 转载

    摘要
    这篇文章讲述了如何在Visual C++5.06.0中自动打开并打印Microsoft Word文档。
    更多信息
    你可以将文章中的代码拷贝到自己的MFC .cpp文件中的事件定义消息处理函数中去。然而,这些代码主要是为了阐述如何处理在Msword8类型库中定义的IDispatch接口与成员函数。读懂并理解了这些代码你就可以修改这些例子,或写些打开并打印Microsoft Word文档的程序。

    因为Word2000中的一些方法与属性有些改变,更多信息请阅读:Office类型库中新的改变

    创建工程步骤

    1.
    Microsoft Word中,创建新文档,添加一些文字并保存为Test.doc。关闭文档并退出Word

    2.
    根据下面知识库中文章的1-12步提供的方法, 我们使用MSWord8.olb类型库中定义的IDispatch接口及其成员函数来创建示例项目。

    如何使用MFC和类型库创建自动化项目

    3.
    AutoProjectDlg.cpp的顶部添加如下行:

    #include "msword8.h" // msword9.h for Word 2000, msword.h for Word 2002

    4. AutoProjectDlg.cpp文件的CAutoProjectDlg::OnRun() 中添加如下代码

    _Application objWord;

     

    // COleVariant定义变量比较方便

    COleVariant covTrue((short)TRUE),

                covFalse((short)FALSE),

                covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

     

    // 得到 IDispatch 指针并附加到objWord对象中.

    if (!objWord.CreateDispatch("Word.Application"))

    {

        AfxMessageBox("Couldn''t get Word object.");

        return;

    }

     

    objWord.SetVisible(TRUE);  //显示程序窗口.

     

    Documents docs(objWord.GetDocuments());_Document testDoc;

     

    testDoc.AttachDispatch(docs.Open(

                          COleVariant("C://Test.doc",VT_BSTR),

                          covFalse,    // 确认转换

                          covFalse,    // 只读

                          covFalse,    // 添加到最近文件中

                          covOptional, // 文档口令.

                          covOptional, // 模板口令.

                          covFalse,    // 恢复原状.

                          covOptional, // 写文档口令.

                          covOptional, // 写模板口令.

                          covOptional) // 格式. // 该参数用于 Word 97 以前

                          covOptional, // 编码 // 用于 Word 2000/2002

                          covTrue,     // 可见

                          covOptional, // OpenConflictDocument

                          covOptional, // 打开并修复

                          (long)0,     // DocumentDirection wdDocumentDirection LeftToRight

                          covOptional  // 无编码对话框

                          )  // Close Open parameters

                          ); // Close AttachDispatch(…)

     

    AfxMessageBox("Now printing 2 copies on the active printer");

     

    testDoc.PrintOut(covFalse,              // Background.

                            covOptional,           // Append.

                            covOptional,           // Range.

                            covOptional,           // OutputFileName.

                            covOptional,           // From.

                            covOptional,           // To.

                            covOptional,           // Item.

                            COleVariant((long)2),  // Copies.

                            covOptional,           // Pages.

                            covOptional,           // PageType.

                            covOptional,           // PrintToFile.

                            covOptional,           // Collate.

                            covOptional,           // ActivePrinterMacGX.

                            covOptional            // ManualDuplexPrint.

                            covOptional,           // PrintZoomColumn  New with Word 2002

                            covOptional,           // PrintZoomRow          ditto

                            covOptional,           // PrintZoomPaperWidth   ditto

                            covOptional);          // PrintZoomPaperHeight  ditto

    // 如果你希望打印前预览文档,你可以使用PrintPreview代替PrintOut//    testDoc[i].PrintPreview.

     

    objWord.Quit(covFalse,  // SaveChanges.

                       covTrue,   // OriginalFormat.

                       covFalse   // RouteDocument.

                       );

                  

    5. 你可能需要修改CAutoProjectDlg::OnRun中的代码指明Test.doc文档的所在路径。参考如下代码:

    testDoc.AttachDispatch(docs.Open(

                                COleVariant("C://My Docs//Test.doc",VT_BSTR)...

    参考

    关于自动化Office的更多信息,可以参考如下文章:
    1) 如何找到并使用Office对象模型文档
    2) 微软关于Office自动化的Web站点

     

    展开全文
  • 使用自动化打开并打印WORD文档

    千次阅读 2010-07-14 15:08:00
    摘要 <br />这篇文章讲述了如何在Visual C++5.0或6.0中自动打开并打印Microsoft Word文档。...懂并理解了这些代码你就可以修改这些例子,或写些打开并打印Microsoft Word文档的程序。 因为Word2000

    摘要

    这篇文章讲述了如何在Visual C++5.0或6.0中自动打开并打印Microsoft Word文档。

    更多信息

    你可以将文章中的代码拷贝到自己的MFC .cpp文件中的事件定义消息处理函数中去。然而,这些代码主要是为了阐述如何处理在Msword8类型库中定义的IDispatch接口与成员函数。读懂并理解了这些代码你就可以修改这些例子,或写些打开并打印Microsoft Word文档的程序。

    因为Word2000中的一些方法与属性有些改变,更多信息请阅读:Office类型库中新的改变

    创建工程步骤

    1. 在Microsoft Word中,创建新文档,添加一些文字并保存为Test.doc。关闭文档并退出Word。

    2. 根据下面知识库中文章的1-12步提供的方法, 我们使用MSWord8.olb类型库中定义的IDispatch接口及其成员函数来创建示例项目。

    如何使用MFC和类型库创建自动化项目

    3. 在AutoProjectDlg.cpp的顶部添加如下行:

    #include "msword8.h" // msword9.h for Word 2000, msword.h for Word 2002

    4. 在AutoProjectDlg.cpp文件的CAutoProjectDlg::OnRun() 中添加如下代码

    _Application objWord;
    
    // 用COleVariant定义变量比较方便
    COleVariant covTrue((short)TRUE),
                covFalse((short)FALSE),
                covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
    // 得到 IDispatch 指针并附加到objWord对象中.
    if (!objWord.CreateDispatch("Word.Application"))
    {
        AfxMessageBox("Couldn''t get Word object.");
        return;
    }
    
    objWord.SetVisible(TRUE);  //显示程序窗口.
    
    Documents docs(objWord.GetDocuments());_Document testDoc;
    
    testDoc.AttachDispatch(docs.Open(
                          COleVariant("C://Test.doc",VT_BSTR),
                          covFalse,    // 确认转换
                          covFalse,    // 只读
                          covFalse,    // 添加到最近文件中
                          covOptional, // 文档口令.
                          covOptional, // 模板口令.
                          covFalse,    // 恢复原状.
                          covOptional, // 写文档口令.
                          covOptional, // 写模板口令.
                          covOptional) // 格式. // 该参数用于 Word 97 以前
                          covOptional, // 编码 // 用于 Word 2000/2002
                          covTrue,     // 可见
                          covOptional, // OpenConflictDocument
                          covOptional, // 打开并修复
                          (long)0,     // DocumentDirection wdDocumentDirection LeftToRight
                          covOptional  // 无编码对话框
                          )  // Close Open parameters
                          ); // Close AttachDispatch(…)
    
    AfxMessageBox("Now printing 2 copies on the active printer");
    
    testDoc.PrintOut(covFalse,              // Background.
                            covOptional,           // Append.
                            covOptional,           // Range.
                            covOptional,           // OutputFileName.
                            covOptional,           // From.
                            covOptional,           // To.
                            covOptional,           // Item.
                            COleVariant((long)2),  // Copies.
                            covOptional,           // Pages.
                            covOptional,           // PageType.
                            covOptional,           // PrintToFile.
                            covOptional,           // Collate.
                            covOptional,           // ActivePrinterMacGX.
                            covOptional            // ManualDuplexPrint.
                            covOptional,           // PrintZoomColumn  New with Word 2002
                            covOptional,           // PrintZoomRow          ditto
                            covOptional,           // PrintZoomPaperWidth   ditto
                            covOptional);          // PrintZoomPaperHeight  ditto
    // 如果你希望打印前预览文档,你可以使用PrintPreview代替PrintOut//    testDoc[i].PrintPreview.
    
    objWord.Quit(covFalse,  // SaveChanges.
                       covTrue,   // OriginalFormat.
                       covFalse   // RouteDocument.
                       );
    		

    5. 你可能需要修改CAutoProjectDlg::OnRun中的代码指明Test.doc文档的所在路径。参考如下代码:

    testDoc.AttachDispatch(docs.Open(
                                COleVariant("C://My Docs//Test.doc",VT_BSTR)...
    

    参考

    关于自动化Office的更多信息,可以参考如下文章:
    1) 如何找到并使用Office对象模型文档
    2) 微软关于Office自动化的Web站点

    展开全文
  • 解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题
  • 计算机编码

    2018-08-23 11:05:54
    为了用计算机记录并显示中文,中国人发明了GB系列编码。GB系列编码定义了中文汉字、标点的编码。按照GB系列编码,在一段文本中,如果一个字节是0~127,那么这个字节的含义同ASCII编码,否则...
  • 今天遇到这个问题,word刚刚关闭,然后就打不开了 出现上面提示 解决方法: 先打开一个可以打开WORD文档 然后选择文件——打开——选择你那个损坏的WORD 然后点打开右边的向下箭头——选打开并修复, 一般都...
  • word技巧

    千次阅读 2018-03-01 21:40:22
    word 高效经典教程(整理版)目录一分钟驾驭word 高效经典教程(整理版)... 6A、基础知识... 61、度量单位... 62、WORD中文字字号与磅的对应关系... 63、字体文件格式... 7B、文本编辑... 71、快速移动文档... 72、...
  • python 编码转换

    千次阅读 2019-04-08 14:52:26
    一、了解字符编码的知识储备  1. 文本编辑器存取文件的原理(nodepad++,pycharm,word)  打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的,断电后数据丢失,...
  • Android 使用模板生成Word文档,支持手机直接查看word

    万次阅读 热门讨论 2015-11-28 17:00:06
    最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,...
  • word 内嵌自动编号

    千次阅读 2016-09-13 20:52:58
    word中,各种列表编号、图表序号、样式格式等等问题,我已经在 word常规模板设置 中做了比较详细的叙述。博客中我讲解了如何从零开始规范得构建一个word模板,规范的使用方式可以使word作为办公软件的效率大大提升。...
  •  我们创建一个名叫WordTest的Windows窗体应用程序作为本次试验的工程,为了能够显示word中的内容,我们先要在下图所示的Program.cs的main()函数中引入控制台Console来显示读取到内容。   Program.cs的代码: n
  • Python2.7字符编码详解

    千次阅读 2017-10-11 10:32:16
    Python2.7字符编码详解
  • Freemarker操作word文档

    千次阅读 2019-01-15 08:54:14
     ①某单位有多个部门,要求导出一个word文档,每个部门生成如下申报表格  ②干工程的一个小伙伴因为换领导,要把40个月*30天的日报的内容从旧模板更换成新的模板 两个的基本思路一样,获得数据,塞到模板里,都...
  • 1.打开word模板,给需要赋值的位置先填上数据,方便查找编写freemarker代码,如下图 2.将word文件另存为xml文件 到桌面 ,然后修改jhj.xml修改后缀 改为 jhj.ftl 文件 3.测试数据 用json数据 {"jhj1":[{"name...
  • Huffman编码与解码_C语言实现

    万次阅读 多人点赞 2017-04-16 10:22:22
    哈夫曼编码(Huffman Coding),是一种编码方式,哈夫曼编码变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就...
  • word 常规模板设置

    万次阅读 2016-08-17 20:02:12
    word作为office的一部分,是微软提供的办公文档写作软件,这个很重要,因为他会提供除了文字编辑的功能之外,还附带很多提高工作效率的自动化功能,这才是专业办公文档写作软件的“专业”所在。当然,要提高协同工作...
  • Python PEP8 编码规范中文版

    万次阅读 多人点赞 2018-01-02 19:21:09
    Python PEP8 编码规范 中文
  • python3字符编码与文件处理终极版

    千次阅读 2020-02-12 11:10:11
    对于说英语的人,纸张上打印的或屏幕上显示的英文单词都算作明文。 其次,我们需要能将明文表示的消息转成另外某种表示,我们还需要能将编码文本转回成明文。从明文到编码文本的转换称为“编码”,从编码文本又转回...
  • 字符编码详解

    千次阅读 2017-04-03 17:19:29
    看到一篇很用心讲字符编码的文章,另外推荐《编码》一书(英文原名《CODE:The Hidden Language of Computer Hardware and Software》) 原文地址 版本:v2.3.1 CrifanLi 摘要 本文主要介绍了字符...
  • java实现导出内容不固定的word文档

    千次阅读 2019-07-09 11:57:00
    之前遇到过一个需求,需要导出一个word的周报,周报的内容是变,然后网上找了下方法,下面摘抄一种方便的实现手段: Java用freemarker导出word 一、模板的制作 先用Word做一个模板,如下图: (注意,上面是...
  • JAVA将图片转成base64导出到word

    千次阅读 2019-09-20 09:15:07
    freemarker来导出word 说一下,图片如何插入 插入成功后 关于ftl的模板如何生成呢!! 打开所需要的模板-选择另存为-其他格式 然后选择Word 2003XML文档(*.xml),点击保存 然后,将test.xml后缀名...
  • C++实现霍夫曼编码

    2017-05-27 22:32:20
    Huffman编码C++实现,分别实现直接输入字符频率编码、统计特定文章字符频率编码、默认频率编码
  • 本篇文章将分享gensim词向量Word2Vec安装、基础用法,并实现《庆余年》中文短文本相似度计算及多个案例。本专栏主要结合作者之前的博客、AI经验和相关文章及论文介绍,后面随着深入会讲解更多的Python人工智能案例及...
  • Java 动态实现word导出功能

    千次阅读 2018-07-24 15:41:00
    把需要导出的doc文件模板用office版本的word工具打开。 把doc文件另存为xx.xml文件 把xx.xml文件重命名为xx.ftl文件 2.编写后台代码,生成word文件 package com.server.common.util.word; impor...
  • 现有一个excel文档,该文档从第三行开始,每一行代表一个化石及其相关的登记资料,如图1,现在需要将每一行数据的内容,填写到对应的word文档中,并将入库照片编号对应的照片插入对应位置,如图2,最后要求不能生成...
  • 编码与工具

    2013-01-08 22:02:02
    1、使用UltraEdit修改当前编辑的文本的编码  第一种方式:File -> Conversion  第二种方式:View -> Set Code Page  如果要在十六进制模式下编辑可以按Ctrl+H   2、对GBK编码的一个普遍误解  根据维基...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,659
精华内容 6,263
关键字:

word打开显示可读的编码