word

Word dokumentumok összefűzése C# -ban

MergeDoc

Gondoltam egyet, és összedobtam egy programot C# -ban, ami összefűz tetszőleges számú és formátumú word dokumentumot. Nem rég szükségem is lett volna egy ilyenre, de ehelyett egyenként tallóztam be egy új dokumentumból a beillesztendő fájlokat. Lehet, lett volna más megoldás, de már mindegy. A program futtatható exe fájlja és a forráskódja is letölthető a következő linken:



Forráskód és EXE fájl

A program fő része gyakorlatilag a következő:

using System;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;

namespace MergeDoc
{
    public partial class Form1 : Form
    {
        OpenFileDialog ofd = new OpenFileDialog();
        public Form1()
        {
            InitializeComponent();

        }

        private void browseBtn_Click(object sender, EventArgs e)
        {
            ofd.Multiselect = true;
            ofd.Title = "Jelöld ki az összefűzendő dokumentumokat";
            String filter = "Word 93-2007 (*.doc,*.docx)|*.doc; *.docx|Word 97-2003 (*.doc)|*.doc|Word 2007 (*.docx)|*.docx";
            ofd.Filter = filter;
         
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                openedDocs.Items.Clear();
                foreach (String filename in ofd.FileNames)
                {
                    openedDocs.Items.Add(filename);
                }
            }
        }

        private void saveBtn_Click(object sender, EventArgs e)
        {
            Word.ApplicationClass wordApp = new Word.ApplicationClass();
            object visible = false;
            object doctype = Word.WdNewDocumentType.wdNewBlankDocument;
            object docformat = Word.WdOriginalFormat.wdOriginalDocumentFormat;
            object missing = System.Reflection.Missing.Value;

            Word.Document outdoc = wordApp.Documents.Add(missing, missing, doctype, visible);
            foreach (String filename in openedDocs.Items)
            {
                object file = filename;
                try
                {
                    outdoc.ActiveWindow.Selection.InsertFile(filename);
                }
                catch (System.Runtime.InteropServices.COMException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            try
            {
                wordApp.Documents.Close();
            }
            catch (System.Runtime.InteropServices.COMException)
            {

            }
            finally
            {
                wordApp.Quit();
            }
        }

    }
}

Én nem állítom, hogy tökéletes, de a célnak megfelelt. Egy nap majd talán írok jobbat. Addig is akit érdekel, használja kedvére.

Tesztelve Microsoft Office 2007 mellett lett Windows 7 rendszerben.
A project Visual Studio 2010 -ben készült de .NET 3.5 verzióra állítva.

Megosztás/Mentés