0%

读取多个文本文件到同一Word文档中

  • 来源:明日科技
  • 读取多个文本文件到同一Word文档中


    实例说明

    读取多个文本文件到同一个Word文档中的实现方法与读取单个文本文件到Word文档基本相同,先根据用户选择的文本文件集合使用StreamReader读取每一个文本文件的文本内容,然后将所有文本文件的内容写入Word文档。实例运行效果如图1所示。

    图1 读取多个文本文件到同一Word文档中
    实例运行中单击”浏览”按钮,会将用户所选择文本文件的路径放入文件列表中,后期可以遍历文件列表使用StreamReader依次读取每一个文本文件的内容到Word文档中,多个文本文件如图2、3、4和5所示。

    图2 第一个文本文件

    图3 第二个文本文件

    图4 第3个文本文件

    图5 第4个文本文件 实例运行中单击”创建Word文档”按钮,首先会创建一个Word文档,然后将多个文本文件的内容写入文本文档。被写入多个文本文件内容的Word文档如图6所示。

    图6 被写入多个文本文件内容的Word文档

    关键技术

    本实例在实现时,主要用到了StreamReader对象依次读取用户指定的文本文件集合中的字符串信息,并将字符串信息写入到Word文档。

    设计过程

    (1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,命名为Multi-TxtToWord。
    (2)使用C#操作Word文档,需要引用相关的COM组件,引用COM组件的步骤请参照实例”创建Word文档”中的设计过程。
    (3)更改默认窗体Form1的Name属性为Frm_Main,更改Text属性为”读取多个文本文件到同一Word文档中”,向窗体中添加一个ListBox控件,用于显示文本文件的集合;向窗体中添加4个Button按钮,按钮分别用于向ListBox中添加文本文件路径、选择Word文档保存路径、创建Word文档和显示Word文档。
    (4)程序主要代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    private void btn_New_Click(object sender, EventArgs e)
    {
    btn_New.Enabled = false; //停用创建按钮
    ThreadPool.QueueUserWorkItem( //使用线程池
    (P_temp) =>//使用lambda表达式
    {
    G_wa = new Word.Application();//创建Word应用程序对象
    Word.Document P_wd = G_wa.Documents.Add(//创建新文档
    ref G_missing, ref G_missing, ref G_missing, ref G_missing);
    Word.Range P_Range = P_wd.Paragraphs[1].Range;//得到文档段落范围
    foreach (string s in G_List_FileName) //遍历文件集合
    {
    using (StreamReader P_StreamReader = //创建文件读取器对象
    new StreamReader(s, Encoding.Default))
    {
    P_Range.Text += P_StreamReader.ReadToEnd(); //读取文本到Word文档
    }
    }
    G_str_path = string.Format(//计算文件保存路径
    @"{0}\\{1}", G_FolderBrowserDialog.SelectedPath,
    DateTime.Now.ToString("yyyy年M月d日h时s分m秒fff毫秒") + ".doc");
    P_wd.SaveAs( //保存Word文件
    ref G_str_path,
    ref G_missing, ref G_missing, ref G_missing, ref G_missing,
    ref G_missing, ref G_missing, ref G_missing, ref G_missing,
    ref G_missing, ref G_missing, ref G_missing, ref G_missing,
    ref G_missing, ref G_missing, ref G_missing);
    ((Word._Application)G_wa.Application).Quit( //退出应用程序
    ref G_missing, ref G_missing, ref G_missing);
    this.Invoke(//开始执行窗体线程
    (MethodInvoker)(() =>//使用lambda表达式
    {
    btn_Display.Enabled = true; //启用显示按钮
    MessageBox.Show("添加文档成功!", "提示!"); //弹出消息对话框
    }));
    });
    }

    秘笈心法

    心法领悟013:合理使用StreamReader对象的ReadToEnd方法!
    使用StreamReader对象的ReadToEnd方法可以方便的一次性全部读取出文本文件的所有文本信息,适当的使用此方法会使文件操作更加便捷。

    觉得文章有用?请我喝杯咖啡~