精华内容
下载资源
问答
  • 使用Aspose.Words保存成的word,内容不缺失,但样式却乱了。 研究好像需要WORD模版,但这个模版没搜到怎么制作,也没找到一个样例。 寻求帮助,谢谢 <p>winform C# </p>
  • 如题,我已经做出了,复制指定table,然后粘贴,但是我想复制一页的内容,模板中除了table外,还有标题,我想一起复制,然后粘贴到下一页?
  • 起因 因项目需要,而且使用html转Word的时候,...这里是说使用Aspose.Word的使用思路,只想某个功能是怎么使用的可以跳过 代码都是人写的,所以每一个代码都有他的风格,了解这些代码作者的思路有利于我们去使用它...

     

    起因

    因项目需要,而且使用html转Word的时候,样式不兼容问题,于是只能使用Aspose.Word通过代码生成。下面是通过DocumentBuilder来设计Word的,但是和使用模型拼接的差不多,原理基本一致。

    思路

    这里是说使用Aspose.Word的使用思路,只想某个功能是怎么使用的可以跳过
    代码都是人写的,所以每一个代码都有他的风格,了解这些代码作者的思路有利于我们去使用它。
    简单使用Word,无非就是文字,图片,表格以及页面的样式。如果了解Css和英语好点的基本都是可以在VS里面点出来的,最难的就是最开始的入门的。

    入门,简单的示例

    Aspose.Words.Document doc = new Document();//新建一个空白的文档
    Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
    doc.Save("文件保存的全路径");
    这里面的`builder`相当于一个画笔,提前给他规定样式,然后他就能根据你的要求画出你想画的Word。这里的画笔使用的是就近原则,当上面没有定义了builder的时候,会使用默认的格式,当上面定义了某个格式的时候,使用最近的一个(即最后一个改变的样式)

    设定Word页面的样式

    builder.PageSetup.PaperSize = PaperSize.A4;//A4纸
    builder.PageSetup.Orientation = Aspose.Words.Orientation.Portrait;//方向
    builder.PageSetup.VerticalAlignment = Aspose.Words.PageVerticalAlignment.Top;//垂直对准
    builder.PageSetup.LeftMargin = 42;//页面左边距
    builder.PageSetup.RightMargin = 42;//页面右边距

    关于页面的设置,基本都在PageSetup中,根据需要和正常的名字,基本都可以猜出来

    写入一段文字

    //获取ParagraphFormat对象,关于行的样式基本都在这里
    var ph = builder.ParagraphFormat;
    //文字对齐方式
    ph.Alignment = ParagraphAlignment.Center;
    // 单倍行距 = 12 , 1.5 倍 = 18
    ph.LineSpacing = 12;
    
    //获取Font对象,关于文字的大小,颜色,字体等等基本都在这个里面
    Aspose.Words.Font font = builder.Font;
    //字体大小
    font.Size = 22;
    //是否粗体
    font.Bold = false;
    //下划线样式,None为无下划线
    font.Underline = Underline.None;
    //字体颜色
    font.Color = Color.Black;//C#的颜色
    font.Color = System.Drawing.ColorTranslator.FromHtml("#3b3131");//自定义颜色
    //设置字体
    font.NameFarEast = "宋体";
    //添加文字
    builder.Write("添加的文字");
    //添加回车
    builder.Writeln();
    //添加文字后回车
    builder.Writeln("添加的文字后回车");

    基本使用到的就是这几个了,如果需要更多可以自己在VS里面点后试试看。

    注意:`builder`在`Write`的时候,默认会使用上面规定的格式,除非你在使用`Write`前更新画笔的格式,所以,当你在做样式很多的Word的时候注意更改画笔的格式。

    添加图片

    builder.InsertImage("图片绝对地址");
    builder.InsertImage("图片绝对地址", 80, 80);//可以控制图片的宽高

    基本是这样使用,当然还有是其他很多种的参数,比如ImageStream等,在使用的时候可以根据需要使用

    添加表格

    //开始添加表格
    Aspose.Words.Tables.Table table = builder.StartTable();
    //开始添加第一行,并设置表格行高
    RowFormat rowf = builder.RowFormat;
    rowf.Height = 40;
    // ....这里rowf可以有很多的设置
    //插入一个单元格
    builder.InsertCell();
    //设置单元格是否水平合并,None为不合并
    builder.CellFormat.HorizontalMerge = CellMerge.None;
    //设置单元格是否垂直合并,None为不合并
    builder.CellFormat.VerticalMerge = CellMerge.None;
    //设置单元格宽
    builder.CellFormat.Width = 40;
    //单元格垂直对齐方向
    builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
    //单元格水平对齐方向
    builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
    builder.CellFormat.FitText = true;//单元格内文字设为多行(默认为单行,会影响单元格宽)
    //单元格内添加文字
    builder.Write("这是第一行第一个单元格");
    builder.InsertCell();
    builder.CellFormat.Width = -1;//当不需要规定这个单元格的宽度的时候,设置成-1,会是自动宽度
    builder.Write("这是第一行第二个单元格");
    //结束第一行
    builder.EndRow();
    //结束表格
    builder.EndTable();
    //设置这个表格的上下左右,内部水平,垂直的线为白色(当背景为白色的时候就相当于隐藏边框了)
    table.SetBorder(BorderType.Left, LineStyle.Double, 1, Color.White, false);
    table.SetBorder(BorderType.Top, LineStyle.Double, 1, Color.White, false);
    table.SetBorder(BorderType.Right, LineStyle.Double, 1, Color.White, false);
    table.SetBorder(BorderType.Bottom, LineStyle.Double, 1, Color.White, false);
    table.SetBorder(BorderType.Vertical, LineStyle.Double, 1, Color.White, false);
    注意:最重要的是不用忘记开始表格,开始一行,结束一行,结束表格
    里面的设置可以根据个人需要修改,也可以不写使用默认的

    表格的合并单元格

    //横向合并单元格
    builder.CellFormat.HorizontalMerge = CellMerge.None;
    builder.CellFormat.HorizontalMerge = CellMerge.First;
    builder.CellFormat.HorizontalMerge = CellMerge.Previous;
    //纵向合并单元格
    builder.CellFormat.VerticalMerge = CellMerge.None;
    builder.CellFormat.VerticalMerge = CellMerge.First;
    builder.CellFormat.VerticalMerge = CellMerge.Previous;
    备注:当不需要合并单元格的时候设置为 None,当需要合并单元格的时候,第一个设置为First,并正常写入这个单元格应该存储的内容。后面的到了要和这个单元格合并的单元格的时候,不需要写入内容,只需要设置成Previous即可。

    展开全文
  • 修改word文档模板

    2020-07-05 00:22:52
    使用word工作的过程中,大家会发现word模板默认的格式很多不符合我们实际工作的需求,比如标题/字体/行间距等等,那怎么修改word默认的模板呢?使得我们每次新建word都是我们自定义的格式呢?这样就不需要每次新建...

    简介

    在使用word工作的过程中,大家会发现word模板默认的格式很多不符合我们实际工作的需求,比如标题/字体/行间距等等,那怎么修改word默认的模板呢?使得我们每次新建word都是我们自定义的格式呢?这样就不需要每次新建word都重新修改字体样式等,一劳永逸~

    注意,其它比如设置ppt的模板等也是同样的的操作过程。

    方法一:直接在Word默认载入的模板文件上修改

    1. 找到新建word时默认载入的模板文件。一般情况是在
      C:\Users\Administrator\AppData\Roaming\Microsoft\Templates 文件夹下,文件名是Normal.dotm (后缀dotm就是word的模板文件)

    2. 直接点开Normal.dotm,对字体行间距等进行格式修改,之后保存。
      在这里插入图片描述
      注意!需要保存成dotm文件,另存于另外的地方,比如命名 doc1.dotm(此时不能直接改为Normal.dotm,可能会导致修改失败)。

    3. 把doc1.dotm重命名为Normal.dotm,拷贝覆盖C:\Users\Administrator\AppData\Roaming\Microsoft\Templates下的Normal.dotm

    4. 以上就大功告成了。(PS:如果怕出错可以先备份原Normal.dotm后再覆盖)
      在这里插入图片描述

    方法二:新建自定义的dotm模板,每次新建word手动选择加载

    1. 新建word,之后直接修改字体等各种格式,把文件保存为dotm文件(会自动调至自定义office模板这个文件夹)
      在这里插入图片描述
    2. 新建word,点击菜单栏的文件—新建----个人,选择之前保存的自定义模板即可~操作如下图
      在这里插入图片描述
      参考链接
      https://blog.csdn.net/zhanghm1995/article/details/81009565
    展开全文
  • 关于如何使用word自定义模板

    千次阅读 2011-07-12 21:58:04
    转自:http://www.redinside.com/bbs/thread-9049-1-1.html有些杂志投稿往往要使用他们做好的模板,到杂志主页相关网页中...现在问题出现了,这个下载下来的模板文件是怎么用的?老鸟当然知道了,但新手们通常都会真接

    转自:http://www.redinside.com/bbs/thread-9049-1-1.html

         有些杂志投稿往往要使用他们做好的模板,到杂志主页相关网页中可以下到,一般都是.dot文件。现在问题出现了,这个下载下来的模板文件是怎么用的?老鸟当然知道了,但新手们通常都会真接双击这个.dot文件,确实word程序也可以打开,而且显示出相关的模板格式,于是新手们就会被迷惑,直接在打开的.dot文件上编辑,完了再保存成一个doc文件。
          其实有时候这样用当然也可以达到效果。但原则上这样的用法是不正确的,特别是当你可能以后经常要用这个模板创建文件的时候,你会发现这不是个好招。
          你可以这样,先打开随便一篇word文档,点击“工具”菜单,选择“选项”子菜单,在弹出的对话框中,选择“文件位置”标签,在下面你可以看到一项“用户模板”以及它的文件夹路径,选中它你可以点击下面的“修改”按钮修改它的位置,一般默认的位置是“C:\DocumentsandSettings\user\ApplicationData\Microsoft\Templates”。也就是说,用户自定义的模板应该存到这个文件夹下。现在好了,知道了这个文件夹位置,把下载下来的那个.dot模板文件copy到这个目录下。(其实一个简单的方法就是在点击“修改”按钮后,在弹出的对话框中空白处右键粘贴,省的去找那个好隐藏的目录)。然后你在word里,点击“文件”中的“新建”菜单,选择模板、本机上的模板,你可以看到在你刚才拷进去的那个模板了。选中,确定,好了一个新文档按模板建立了。
          就这样,只要你机器不重装,你一直可以很方便的建立模板的新文档。而且这样来建立新文档可能在word的工具栏里会多一些很有用的功能按钮,这是之前说的那种新手方法(直接在dot上编辑)所没有的。

    展开全文
  • java使用ftl的html模板导出word文档 能不能设置页眉页脚?如果能的话是应该怎么设置的。求大神帮帮忙
  • 最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,...

          最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,抱怨归抱怨,但是面对需求只能硬着头皮做了,经过各种拷问度娘和谷哥,终于找了一个比较好用的方法。特此跟他家分享。

           Apache 公司推出的 Apache POI,我们来看下他的介绍:Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

           废话少说开始编码,首先我们要下Apache POI的开发jar包,下载地址:http://poi.apache.org/download.html,这里推荐不要下最新版本的,因为一开始我用最新版本的会出一下莫名其妙的问题,后面换旧的版本就OK了。这里我用的是3.9的还是比较稳定的、


            开发有2个包,有一点我就非常郁闷Apache居然没有提供api稳定,开发起来还是比较蛋疼的,可能是我自己没有找到把,如果有知道的筒子可以@我、嘿嘿。不过Apache还是提供了Demo大家可以参考。还有我们要准备我们使用的word模板文件、这里我们放在了assets下面了。首先我们来看看怎么使用模板:

    1. package com.test.poiword;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.ActivityNotFoundException;  
    5. import android.content.Intent;  
    6. import android.net.Uri;  
    7. import android.os.Bundle;  
    8. import android.view.View;  
    9. import android.view.View.OnClickListener;  
    10. import android.widget.Button;  
    11. import android.widget.Toast;  
    12.   
    13. import com.test.poiword.utils.FileUtils;  
    14.   
    15. import org.apache.poi.hwpf.HWPFDocument;  
    16. import org.apache.poi.hwpf.usermodel.Range;  
    17.   
    18. import java.io.ByteArrayOutputStream;  
    19. import java.io.File;  
    20. import java.io.FileInputStream;  
    21. import java.io.FileOutputStream;  
    22. import java.io.IOException;  
    23. import java.io.InputStream;  
    24. import java.util.HashMap;  
    25. import java.util.Map;  
    26.   
    27. public class MainActivity extends Activity {  
    28.     // 模板文集地址  
    29.     private static final String demoPath =  "/mnt/sdcard/doc/test.doc";  
    30.     // 创建生成的文件地址  
    31.     private static final String newPath = "/mnt/sdcard/doc/testS.doc";  
    32.     private Button btn,btns;  
    33.     @Override  
    34.     protected void onCreate(Bundle savedInstanceState) {  
    35.         super.onCreate(savedInstanceState);  
    36.         setContentView(R.layout.activity_main);  
    37.         btn=(Button)findViewById(R.id.btn);  
    38.         btns=(Button)findViewById(R.id.btns);  
    39.         btn.setOnClickListener(new OnClickListener() {  
    40.   
    41.             @Override  
    42.             public void onClick(View arg0) {  
    43.                 try {  
    44.                     InputStream inputStream = getAssets().open("test.doc");  
    45.                     FileUtils.writeFile(new File(demoPath), inputStream);  
    46.                 } catch (Exception e) {  
    47.                     e.printStackTrace();  
    48.                 }  
    49.                 doScan();  
    50.             }  
    51.         });  
    52.         btns.setOnClickListener(new OnClickListener() {  
    53.   
    54.             @Override  
    55.             public void onClick(View arg0) {  
    56.                 Intent intent = new Intent(MainActivity.this,WordHtmlActivity.class);  
    57.                 startActivity(intent);  
    58.             }  
    59.         });  
    60.   
    61.     }  
    62.   
    63.     private void doScan(){  
    64.         //获取模板文件  
    65.         File demoFile=new File(demoPath);  
    66.         //创建生成的文件  
    67.         File newFile=new File(newPath);  
    68.         Map<String, String> map = new HashMap<String, String>();  
    69.         map.put("$QYMC$", "xxx科技股份有限公司");  
    70.         map.put("$QYDZ$", "上海市杨浦区xx路xx号");  
    71.         map.put("$QYFZR$", "张三");  
    72.         map.put("$FRDB$", "李四");  
    73.         map.put("$CJSJ$", "2000-11-10");  
    74.         map.put("$SCPZMSJWT$", "5");  
    75.         map.put("$XCJCJBQ$", "6");  
    76.         map.put("$JLJJJFF$", "7");  
    77.         map.put("$QYFZRQM$", "张三");  
    78.         map.put("$CPRWQM$", "赵六");  
    79.         map.put("$ZFZH$", "100001");  
    80.         map.put("$BZ$", "无");  
    81.         writeDoc(demoFile,newFile,map);  
    82.         //查看  
    83.         doOpenWord();  
    84.     }  
    85.     /**  
    86.      * 调用手机中安装的可打开word的软件  
    87.      */  
    88.     private void doOpenWord(){  
    89.         Intent intent = new Intent();  
    90.         intent.setAction("android.intent.action.VIEW");  
    91.         intent.addCategory("android.intent.category.DEFAULT");  
    92.         String fileMimeType = "application/msword";  
    93.         intent.setDataAndType(Uri.fromFile(new File(newPath)), fileMimeType);  
    94.         try{  
    95.             MainActivity.this.startActivity(intent);  
    96.         } catch(ActivityNotFoundException e) {  
    97.             //检测到系统尚未安装OliveOffice的apk程序  
    98.             Toast.makeText(MainActivity.this, "未找到软件", Toast.LENGTH_LONG).show();  
    99.             //请先到www.olivephone.com/e.apk下载并安装  
    100.         }  
    101.     }  
    102.     /**  
    103.      * demoFile 模板文件  
    104.      * newFile 生成文件  
    105.      * map 要填充的数据  
    106.      * */  
    107.     public void writeDoc(File demoFile ,File newFile ,Map<String, String> map)  
    108.     {  
    109.         try  
    110.         {  
    111.             FileInputStream in = new FileInputStream(demoFile);  
    112.             HWPFDocument hdt = new HWPFDocument(in);  
    113.             // Fields fields = hdt.getFields();  
    114.             // 读取word文本内容  
    115.             Range range = hdt.getRange();  
    116.             // System.out.println(range.text());  
    117.   
    118.             // 替换文本内容  
    119.             for(Map.Entry<String, String> entry : map.entrySet())  
    120.             {  
    121.                 range.replaceText(entry.getKey(), entry.getValue());  
    122.             }  
    123.             ByteArrayOutputStream ostream = new ByteArrayOutputStream();  
    124.             FileOutputStream out = new FileOutputStream(newFile, true);  
    125.             hdt.write(ostream);  
    126.             // 输出字节流  
    127.             out.write(ostream.toByteArray());  
    128.             out.close();  
    129.             ostream.close();  
    130.         }  
    131.         catch(IOException e)  
    132.         {  
    133.             e.printStackTrace();  
    134.         }  
    135.         catch(Exception e)  
    136.         {  
    137.             e.printStackTrace();  
    138.         }  
    139.     }  
    140.   
    141. }  

             上面代码的代码并不多,首先我们要注意的是我们使用的poi的api大部分是在org.apache.poi.hwpf下面的,大家不要导错包了,因为apache每个包对应的内容不同:

              上面代码不难懂,就是把我们要放的内容使用特定的代号组装一个map塞到我们的模板里面去,然后重新存储下,不过我们模板也要使用相同的代号、poi才能识别:

            这样我们就使用模板大功告成了,就可以查看了、但是有些手机并没有装wps类似的工具,要是手机可以直接查看那就好了,嘿嘿、当然apache肯定也想到了、提供了这样的api下面上代码:

    1. package com.test.poiword;  
    2.   
    3. import android.os.Bundle;  
    4. import android.support.v4.app.FragmentActivity;  
    5. import android.webkit.WebSettings;  
    6. import android.webkit.WebView;  
    7.   
    8. import com.test.poiword.utils.FileUtils;  
    9.   
    10. import org.apache.poi.hwpf.HWPFDocument;  
    11. import org.apache.poi.hwpf.converter.PicturesManager;  
    12. import org.apache.poi.hwpf.converter.WordToHtmlConverter;  
    13. import org.apache.poi.hwpf.usermodel.Picture;  
    14. import org.apache.poi.hwpf.usermodel.PictureType;  
    15. import org.w3c.dom.Document;  
    16.   
    17. import java.io.BufferedWriter;  
    18. import java.io.ByteArrayOutputStream;  
    19. import java.io.File;  
    20. import java.io.FileInputStream;  
    21. import java.io.FileNotFoundException;  
    22. import java.io.FileOutputStream;  
    23. import java.io.IOException;  
    24. import java.io.OutputStreamWriter;  
    25. import java.util.List;  
    26.   
    27. import javax.xml.parsers.DocumentBuilderFactory;  
    28. import javax.xml.transform.OutputKeys;  
    29. import javax.xml.transform.Transformer;  
    30. import javax.xml.transform.TransformerFactory;  
    31. import javax.xml.transform.dom.DOMSource;  
    32. import javax.xml.transform.stream.StreamResult;  
    33.   
    34. /**  
    35.  * Created by fuweiwei on 2015/11/28.  
    36.  */  
    37. public class WordHtmlActivity extends FragmentActivity {  
    38.     //文件存储位置  
    39.     private String docPath = "/mnt/sdcard/doc/";  
    40.     //文件名称  
    41.     private String docName = "test.doc";  
    42.     //html文件存储位置  
    43.     private String savePath = "/mnt/sdcard/doc/";  
    44.     @Override  
    45.     protected void onCreate(Bundle savedInstanceState) {  
    46.         super.onCreate(savedInstanceState);  
    47.         setContentView(R.layout.html);  
    48.         String name = docName.substring(0, docName.indexOf("."));  
    49.         try {  
    50.             convert2Html(docPath + docName, savePath + name + ".html");  
    51.         } catch (Exception e) {  
    52.             e.printStackTrace();  
    53.         }  
    54.         //WebView加载显示本地html文件  
    55.         WebView webView = (WebView)this.findViewById(R.id.office);  
    56.         WebSettings webSettings = webView.getSettings();  
    57.         webSettings.setLoadWithOverviewMode(true);  
    58.         webSettings.setSupportZoom(true);  
    59.         webSettings.setBuiltInZoomControls(true);  
    60.         webView.loadUrl("file:/"+savePath+name+".html");  
    61.     }  
    62.   
    63.     /**  
    64.      * word文档转成html格式  
    65.      * */  
    66.     public void convert2Html(String fileName, String outPutFile) {  
    67.         HWPFDocument wordDocument = null;  
    68.         try {  
    69.             wordDocument = new HWPFDocument(new FileInputStream(fileName));  
    70.             WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(  
    71.                     DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());  
    72.             //设置图片路径  
    73.             wordToHtmlConverter.setPicturesManager(new PicturesManager() {  
    74.                 public String savePicture(byte[] content,  
    75.                                           PictureType pictureType, String suggestedName,  
    76.                                           float widthInches, float heightInches) {  
    77.                     String name = docName.substring(0, docName.indexOf("."));  
    78.                     return name + "/" + suggestedName;  
    79.                 }  
    80.             });  
    81.             //保存图片  
    82.             List<Picture> pics=wordDocument.getPicturesTable().getAllPictures();  
    83.             if(pics!=null){  
    84.                 for(int i=0;i<pics.size();i++){  
    85.                     Picture pic = (Picture)pics.get(i);  
    86.                     System.out.println( pic.suggestFullFileName());  
    87.                     try {  
    88.                         String name = docName.substring(0,docName.indexOf("."));  
    89.                         String file = savePath+ name + "/"  
    90.                                 + pic.suggestFullFileName();  
    91.                         FileUtils.makeDirs(file);  
    92.                         pic.writeImageContent(new FileOutputStream(file));  
    93.                     } catch (FileNotFoundException e) {  
    94.                         e.printStackTrace();  
    95.                     }  
    96.                 }  
    97.             }  
    98.             wordToHtmlConverter.processDocument(wordDocument);  
    99.             Document htmlDocument = wordToHtmlConverter.getDocument();  
    100.             ByteArrayOutputStream out = new ByteArrayOutputStream();  
    101.             DOMSource domSource = new DOMSource(htmlDocument);  
    102.             StreamResult streamResult = new StreamResult(out);  
    103.   
    104.             TransformerFactory tf = TransformerFactory.newInstance();  
    105.             Transformer serializer = tf.newTransformer();  
    106.             serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");  
    107.             serializer.setOutputProperty(OutputKeys.INDENT, "yes");  
    108.             serializer.setOutputProperty(OutputKeys.METHOD, "html");  
    109.             serializer.transform(domSource, streamResult);  
    110.             out.close();  
    111.             //保存html文件  
    112.             writeFile(new String(out.toByteArray()), outPutFile);  
    113.         } catch (Exception e) {  
    114.             e.printStackTrace();  
    115.         }  
    116.     }  
    117.   
    118.     /**  
    119.      * 将html文件保存到sd卡  
    120.      * */  
    121.     public void writeFile(String content, String path) {  
    122.         FileOutputStream fos = null;  
    123.         BufferedWriter bw = null;  
    124.         try {  
    125.             File file = new File(path);  
    126.             if(!file.exists()){  
    127.                 file.createNewFile();  
    128.             }  
    129.             fos = new FileOutputStream(file);  
    130.             bw = new BufferedWriter(new OutputStreamWriter(fos,"utf-8"));  
    131.             bw.write(content);  
    132.         } catch (FileNotFoundException fnfe) {  
    133.             fnfe.printStackTrace();  
    134.         } catch (IOException ioe) {  
    135.             ioe.printStackTrace();  
    136.         } finally {  
    137.             try {  
    138.                 if (bw != null)  
    139.                     bw.close();  
    140.                 if (fos != null)  
    141.                     fos.close();  
    142.             } catch (IOException ie) {  
    143.             }  
    144.         }  
    145.     }  
    146. }  

            上面的代码的原理起始也很简单,poi提供了让word文档转换成html页面的方法、我们只需要使用webview来加载这个html就ok了,这样我们就可以再手机端直接查看我们的word文档了,是不是好强大。其实看起来的比较复杂的功能只要我们静下心来想想就没有我们想象中的那么复杂,今天就为大家分享到这了。下面有Demo的源码。




    源码下载



    转自:http://blog.csdn.net/u011916937/article/details/50085441





    展开全文
  • 最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,...
  • 一、准备工作 1、jar包:freemarker-2.3.20.jar maven: org.freemarker ...这是一个事先写好的一个word模板,我们需要做的就是把需要导出的数据相应的插入到里面(其实如果你了解freemarker就会明白的,...
  • 由于项目的关系,对于这种组件性的开发方式我想的是怎么方便怎么来,怎么快就怎么来 在咨询了之前做政务系统的同学后,他们都一致推荐我使用aspose框架来实现,因为它的效率高并且简单方便使用 在看了下aspose的...
  • 但是怎么导入word数据。发现如果是xml格式,数据格式很易变。如一个标题中如果有中文,后面是个数字,另存成xml时就变成了2个元素了。太郁闷了。 后来找到方法可以分段落读入纯word文档。要找到了word基于模板替换...
  • word试题模板设计总结

    2017-05-28 11:18:56
    记录word模板设计过程,一般来说,设计格式大体相似。一般的思路都是一道题的信息全部标识出来,但是项目中我使用的第二种,把一件事情拆开,分成两部分做,把两部分结合起来,一件事就算完成。并且再做完后,发现...
  • 前言:最近要做一个导出word功能,其实网上有很多的例子,但是我需要的是合并单元格的,可是查了好久都没有自己想要的。研究了几天其实挺简单的,在这儿我就简单...2.1:这个word.ftl怎么来? 首先准备一份要导出的word
  • 1.word每次打开都会自动打开默认模板,而我们自己设置了一些样式有时候却用不上,每次打开都得重新设置样式。本文记录一下怎么设置自己的模板为默认打开模板。 2.首先需要设置好自己需要的样式。不知道怎么设置...
  • 最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,...
  • Word标题怎么更改

    2015-07-03 22:27:23
    使用别人的文档模板进行修改后完成文档,保存后依然在这个“标题”显示原先的名字。   怎么改呢?   右键当前文档“属性”,进入“摘要”标签页,在“标题”栏输入自己想要的名称,然后点击确定即可。   ...
  • 现在项目中,java导出word的方式是利用freemarket的template.poccess方式,以xml格式的...转为xml,然后用变量来接收节点里面的内容,在模板位置中使用该变量,可是不起作用。不知道这种 需求有没有哪位大神帮给个思想。
  • word怎么恢复默认样式

    万次阅读 2017-05-05 05:02:30
    有时候我们在使用word的过程中会不小心替换了word的默认样式,那么需要恢复原有样式该如何操作呢? 方法如下 1、关闭所有word2007文档。 2、打开任意一个文件夹,在地址栏中输入:%USERPROFILE%\AppData\Roaming\...
  • 步骤比较详细啰嗦,其中有讲到rdlc怎么新建设计,如果已经会设计rdlc了的可以直接跳到底部看代码的执行结果, 底部还有源码下载链接,百度盘 首先控制台安装报表包 新建rdlc 报表 建立rdlc里要用的数据...
  • 使用freemarker生成word

    2015-11-23 13:55:19
    最近弄一个项目,需要读取xml文件里面的内容生成word文档,网上找了很多方案,最后选择用freemarker来处理,一是读写起来比较简单,而是不需要设置复杂的Word格式且一旦格式有变化重新生成模板就成,不需要改java...
  • 现项目使用npoi将网页内容生成一个word文档,流程是生成和客户需求模板一样类型的,先将模板读取后写入xwpfdocument,然后将网页内容通过定位和xwpfdocument绑在一起,最后写到新的word中,关键问题来了,客户提供的...
  • java处理word已经存在很多种方法了,但是用起来都不是那么方便,而且不太灵活,而使用xml的方法可以做到非常灵活,你可以先建好模板,然后往里面填数,模板怎么建,填出来的效果就是怎么样的。首先说说word和xml的...
  • java处理word已经存在很多种方法了,但是用起来都不是那么方便,而且不太灵活,而使用xml的方法可以做到非常灵活,你可以先建好模板,然后往里面填数,模板怎么建,填出来的效果就是怎么样的。首先说说word和xml的...
  • 使用Word2013发布博客

    2017-01-05 23:24:44
    打开Word软件,新建->博客文章(第一次在模板下面可能找不到,可以在搜索栏中搜索"博客",下次在首页就能直接找到)。 步骤二、编辑博客文章 1、输入文章标题 2、插入类别,如果是想把博客归类到未命名的分组...
  • java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,...
  • 在日常办公中,我们经常会制作一些制式的文档模板供员工们打印使用,在制作这些模板时经常会用到的就是下划线,尤其是要在空白处添加下划线。文字下添加下划线,大家基本上都会,但是如何在空白的地方添加下划线呢,...
  • word里面自动生成目录的时候,出现部分目录是黑体怎么处理。 在使用了别人的模板后,重新更新目录后,发现部分目录是黑体,正常需要中文字体是宋体。 解决方式: 1.打开文档的视图————大纲视图, 2.对...
  • 前言: 最近在做一个【生成报告类的系统】,其中最核心的功能就是“如何一键生成报告” 为了解决这一难题,博主采取了很多方案,也参考...百度模板类(这种个人觉得相对复杂点,博主没怎么看过) 使用jQuery插件——Wo

空空如也

空空如也

1 2 3 4 5
收藏数 83
精华内容 33
关键字:

word模板怎么使用