Работа с файлом Word C#

320
04 июня 2018, 10:30

делаю вывод отчета в ворд по шаблону из таблицы в базе данных MSSQL, но не получается заменить слово в шаблоне table_job на таблицу которую я заполнил. Эта таблица удаляет все старые записи.

Цель: нужно создать таблицу и вывести ее точно где в шаблоне написано table_job. вот сам шаблон Необработанное исключение типа "System.Runtime.InteropServices.COMException" в Dip_Project_v1.0.exe Дополнительные сведения: Неверное положение символа. Код ниже

private readonly string TemplateFilename = @"C:\Users\Tim\Documents\Visual Studio 2015\Projects\Dip_Project_v1.1\Dip_Project_v1.0\Tamplate_zakaz_naryad_new.doc";
    private void button1_Click(object sender, EventArgs e)
    {
        string name_client, model_car;
        Form1 f1 = new Form1();
        using (SqlConnection sqlcon = new SqlConnection(f1.connected))
        {
            sqlcon.Open();
            // Имя заказчика
            string qeury_job = "SELECT name FROM dbo.tim_clients_type WHERE id = '" + comboBox1.SelectedValue + "'";
            using (SqlCommand sqlcmd = new SqlCommand(qeury_job, sqlcon))
            {
                name_client = sqlcmd.ExecuteScalar().ToString();
            }
            // Модель его машины
            string qeury_car = "SELECT model FROM dbo.tim_car WHERE(id = '" + comboBox2.SelectedValue+ "')";
            using (SqlCommand sqlcmd = new SqlCommand(qeury_car, sqlcon))
            {
                model_car = sqlcmd.ExecuteScalar().ToString();
            }
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
            Document doc = wordApp.Documents.Open(TemplateFilename);
            Range r = doc.Range();
            Table table_job = doc.Tables.Add(r,1,8 );
            table_job.Borders.Enable = 1;
            using (SqlCommand sqlcmd = new SqlCommand("SELECT * FROM dbo.tim_job Where fid_zakaz_naryad = '" + txt_nom_zakaza.Text + "'", sqlcon))
            {
                using (SqlDataReader reader = sqlcmd.ExecuteReader())
                {
                    int j = 1;
                    while (reader.Read())
                    {
                        table_job.Rows.Add();
                        for (int i =1; i <= reader.FieldCount; i++)
                        {
                            table_job.Cell(j, i).Range.Text = reader.GetValue(i - 1).ToString();
                        }
                        j = j + 1;
                    }
                }
            }
            // Запись в документ
            ReplaceWord("<date_today>", dateTimePicker1.Value.ToString(), doc); //сегоднешнее число
            ReplaceWord("<Name_client>", name_client, doc);// имя заказчика 
            ReplaceWord("<Model_car>", model_car, doc);// модель машины
           // ReplaceWord("<table_job>", table_job, doc);// таблица из базой с работой
            wordApp.Visible = true;
            sqlcon.Close();
        }
    }
    private void ReplaceWord(string replace, string text, Document doc)//замена
    {
        var range = doc.Content;
        range.Find.ClearFormatting();
        range.Find.Execute(FindText: replace, ReplaceWith: text);
    }

Вот что получается: Повторюсь, мне надо, чтобы эта таблица заменилась место table_job

READ ALSO
Сохранить базу данных в папке с программой

Сохранить базу данных в папке с программой

Как изменить путь к базе данных? Я хочу чтобы она была в папке с программой

234
Как правильно прописать if?

Как правильно прописать if?

Хочу сделать проверку на количесвто, те больше или меньше

244
DataGridView в файл

DataGridView в файл

Подскажите, как записать и считать строки dataGridView в уже созданный файл начиная со второй строки

274
Wrapper для структуры in6_addr (с++) на C#

Wrapper для структуры in6_addr (с++) на C#

Кто нибудь сможет подсказатьДана стандартная структура in6_addr на С++ она выглядит так: typedef struct in6_addr { union { UCHAR Byte[16]; USHORT Word[8];...

236