Таблица из Excel в Word

372
09 ноября 2017, 03:22

Подскажите пожалуйста, как экспортировать таблицу из excel в word. Пробовал вот так.

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Documents;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.IO;
 using System.Diagnostics;
 using System.Windows.Forms;
 using winForms = System.Windows.Forms;
 using Word = Microsoft.Office.Interop.Word;
 using MessageBox = System.Windows.MessageBox;

namespace ExcelToWord
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    Word._Application oWord = new Word.Application();
    public MainWindow()
    {
        InitializeComponent();
    }
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.InitialDirectory = "c:\\";
        openFileDialog1.Filter = "Excel files|*.xlsx";
        openFileDialog1.RestoreDirectory = true;
        if (openFileDialog1.ShowDialog() == winForms.DialogResult.OK)
        {
            textBox1.Text = openFileDialog1.FileName;
        }
    }
    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        SaveFileDialog folderdialog = new SaveFileDialog();
        folderdialog.InitialDirectory = "c:\\";
        folderdialog.Filter = "Word files|*.docx";
        folderdialog.RestoreDirectory = true;
        if (folderdialog.ShowDialog() == winForms.DialogResult.OK) 
 File.WriteAllText(folderdialog.FileName, textBox1.Text);
        {
            textBox2.Text = folderdialog.FileName;
        }
    }
    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        string tmpPath = textBox2.Text;
        string xlPath = textBox1.Text;
        Word.Application wdApp = null;
        Word.Document wdDoc = null;
        try
        {
            wdApp = new Word.Application();
            wdDoc = wdApp.Documents.Open(tmpPath);
        }
        catch (Exception ex)
        {
            if (wdApp == null || wdDoc == null) wdApp.Quit(false);
            MessageBox.Show(ex.Message);
            return;
            throw;
        }
        //Версия книги Excel по расширению
        int xlVersion = System.IO.Path.GetExtension(xlPath) == "xls" ? 8 : 
 12;
        //Выбор закладки, чтобы задать место вставки
        wdDoc.Bookmarks["test"].Select();
        wdApp.Selection.Collapse(Word.WdCollapseDirection.wdCollapseStart);
        //Вставка поля связи с таблицей в местоположение курсора. Но не в 
  закладку!!!
        Word.Field fld = wdApp.Selection.Fields.Add(
            wdApp.Selection.Range,
            Word.WdFieldType.wdFieldLink,
            "Excel.Sheet." + xlVersion.ToString() + " " +
            xlPath.Replace("\\", "\\\\") + " Лист1!A1G1:A290G290 \\a \\f 5 
\\h", true);
        //Запоминание режима отображения полей, т.к. для определения 
закладки нужно,
        //чтобы отображалась таблица, а не код поля Link
        bool showFieldCodes = wdApp.ActiveWindow.View.ShowFieldCodes;
        //Выключение отображения полей
        wdApp.ActiveWindow.View.ShowFieldCodes = false;
        //После вставки таблицы курсор окажется за ней. Смещаем курсор влево
        //пока он не окажется в таблице
        while (!
 (bool)wdApp.Selection.Information[Word.WdInformation.wdWithInTable])
            wdApp.Selection.MoveLeft();
        //Переопределение закладки
        wdDoc.Bookmarks.Add("test", wdApp.Selection.Tables[1].Range);
        //Восстановление режима отображения полей
        wdApp.ActiveWindow.View.ShowFieldCodes = showFieldCodes;
        //Разрыв связи с таблицей. Если нужно.
        fld.Unlink();
        //Показ приложения
        wdApp.Visible = true;
    }
    private void Button_Click_3(object sender, RoutedEventArgs e)
    {
        this.Close();
    }
}
}
READ ALSO
Awesomium IWebView в WebView

Awesomium IWebView в WebView

Как преобразовать IWebView (WebCoreViews) в обычное WebView?

328
Entity Framework ORA-00932: inconsistent datatypes: &ldquo;&#39;expected CLOB got CHAR&rdquo;

Entity Framework ORA-00932: inconsistent datatypes: “'expected CLOB got CHAR”

Для доступа к БД Oracle из MVC ASPNet приложения используется библиотека Oracle

263
Отладка конкретного потока

Отладка конкретного потока

При отладке создаются 8 потоков, каждый из которых выполняет одну и ту же функцию параллельноКак можно проследить путь через F11 от начала...

273
Как привязать событие к кнопке

Как привязать событие к кнопке

У меня две кнопки CustomButtonЕсть только одно событие у клиента ClientSideEvent -> CustomButtonClick

360