动态数据生成Word文档

        最近做项目,让做一个将页面上的数据按照固定的格式保存到一个Word中,记得当初在考试系统的时候,我们的那个系统也实现了这个功能,那个时候知识觉得,哇喔,好神奇啊,那个一个杂乱无章的页面,都可以让他显示的很有层次,如果像Excel中那个,行是行,列是列的,还好控制一点。好难,他们好牛!

        可以今天轮到自己做这个东西了,哎,这个后悔,当初多问一句,为什么,这个是怎么做的,稍微说一句,今天好赖看看不就可以了。出来混早晚是要还的!弄的今天做的时候,都不知道如何查资料。最后只能从“Word”查起。

         不过查了查,好像这个东西好像还是挺简单的,其实原理上跟操作Excel是差不多,先根据路径找到对应的文件,然后对该文件进行操作,然后关闭。(这不就是 把大象放冰箱里的步骤 --哈哈)。

         好了既然这么简单,就给大家用一个小的例子看看这个东西是怎么个简单法!

         这个我们就以一封信为例来进行讲解!

       大家先来看一下信的模板,如图所示:

        

       这个封信中有一个字是变的,有些字是不变的!变的字是我们需要动态输入的。而不变的字是我们需要做到模板中的! 模板的制作方式如图所示,(图示为收信人的标签的添加,其他的标签添加是一样的,相信聪明的你肯定是一看就会的)提醒一点,光标的位置一定不要放错位置,否则的就是收信人为写信人,日期为收信人。。。。。  

      

      模板建好了,比如说保存在了“D://写信模板//信模板.dotx”,下边就是该写程序了。在程序中,要先添加MICROSOFT.WORD的引用。 然后看一下代码

       

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop;

namespace word模板
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //System.Reflection.Missing.Value是System.Reflection.Missing类的唯一实例,作为缺省值参数传给word或excel对象的某个函数
            object oMissing = System.Reflection.Missing.Value;
            //创建一个Word应用程序实例
            Microsoft.Office .Interop.Word ._Application oWord = new Microsoft .Office .Interop.Word .Application();
            //设置为不可见
            oWord.Visible = false;
            //模板文件地址,这里假设在X盘根目录
            object oTemplate = "D://写信模板//信模板.dotx";
            //以模板为基础生成文档
            Microsoft.Office.Interop.Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
            //声明书签数组
            object[] oBookMark = new object[4];
            //赋值书签名
            oBookMark[0] = "ReceiveName";
            oBookMark[1] = "content";
            oBookMark[2] = "WriterName";
            oBookMark[3] = "date";
            //赋值任意数据到书签的位置
            oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = "王先生";
            oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = "最近身体好吗?生活还快乐吗?每天早晨还按时起床吗?上班期间还玩游戏吗?...............";
            oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = "你的对头XXX";
            oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = DateTime .Now.ToShortDateString();
            //弹出保存文件对话框,保存生成的Word
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "Word Document(*.doc)|*.doc";
            sfd.DefaultExt = "Word Document(*.doc)|*.doc";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                //保存的路径
                object filename = sfd.FileName;
                //括号中的参数为一些参数,可以自己设计,也可以使用缺省的!(具体什么意思可以去查一下API文档!)
                oDoc.SaveAs(ref filename, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing);
                oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
                //关闭word
                oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
            }

        }
    }
      当然实际中这些数据可能是要从数据库中获取,然后保存的,这个过程就是小CASE了!  希望对您有帮助!

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
要导出带表格数据Word文档,同样可以使用EasyPOI这个Java开发库来实现。EasyPOI可以帮助我们快速、方便地生成各种格式的Office文档。 下面是一个简单的例子,演示如何使用EasyPOI导出带表格数据Word文档: ```java // 创建Word文档对象 XWPFDocument doc = new XWPFDocument(); // 创建表格对象 XWPFTable table = doc.createTable(); // 定义表头 XWPFTableRow headerRow = table.getRow(0); headerRow.getCell(0).setText("姓名"); headerRow.createCell().setText("年龄"); // 添加数据 List<List<String>> dataList = getDataList(); for (List<String> rowList : dataList) { // 创建新行 XWPFTableRow row = table.createRow(); // 设置单元格内容 for (int i = 0; i < rowList.size(); i++) { row.getCell(i).setText(rowList.get(i)); } } // 导出Word文档 FileOutputStream out = new FileOutputStream("output.docx"); doc.write(out); out.close(); ``` 在上面的例子中,我们首先创建了一个XWPFDocument对象,代表一个空白的Word文档。然后创建了一个XWPFTable对象,代表一个空白的表格。接着,我们定义了表头,并循环遍历数据,为每行数据创建一行,并设置单元格内容。最后,将文档导出到指定的文件中。 需要注意的是,上面的例子中使用了一个List<List<String>>来代表表格数据。这个数据结构需要根据实际情况来定义。另外,需要在项目中引入EasyPOI的相关依赖,具体可以参考官方文档

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值