Есть ли способ загрузить файл прямо из sql, и мне нужен метод для замены изображения другим изображением в sql

У меня есть файл шаблона Word в базе данных SQL-сервера что мне нужно изменить тексты суммы на нем. Я пытаюсь сначала загрузить файл во временные файлы, а затем загружаю его в свой код. есть ли способ загрузить файл непосредственно в мой код, который я использую (сначала сохранение файла на диск) после этого мне нужно изменить изображение на другое изображение в БД.

public Boolean save_agaza_file(string pattth)
    {
        Boolean result = false;
        Document wordDoc = new Document();
        Application wordApp = new Application();
        try
        {
            //OBJECT OF MISSING "NULL VALUE"

            Object oMissing = System.Reflection.Missing.Value;

            Object oTemplatePath = pattth;



            //wordDoc = new Document();

            wordDoc = wordApp.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);
            DateTime day_start = DateTime.Now.AddDays(1);
            DateTime day_end = DateTime.Now.AddDays(2);
            foreach (Range rr in wordDoc.StoryRanges)
            {


            }
            foreach (Field myMergeField in wordDoc.Fields)
            {


                Range rngFieldCode = myMergeField.Code;

                String fieldText = rngFieldCode.Text;



                // ONLY GETTING THE MAILMERGE FIELDS

                if (fieldText.StartsWith(" MERGEFIELD"))
                {

                    // THE TEXT COMES IN THE FORMAT OF

                    // MERGEFIELD  MyFieldName  \\* MERGEFORMAT

                    // THIS HAS TO BE EDITED TO GET ONLY THE FIELDNAME "MyFieldName"

                    Int32 endMerge = fieldText.IndexOf("\\");

                    Int32 fieldNameLength = fieldText.Length - endMerge;

                    String fieldName = fieldText.Substring(11, endMerge - 11);

                    // GIVES THE FIELDNAMES AS THE USER HAD ENTERED IN .dot FILE

                    fieldName = fieldName.Trim();

                    // **** FIELD REPLACEMENT IMPLEMENTATION GOES HERE ****//

                    // THE PROGRAMMER CAN HAVE HIS OWN IMPLEMENTATIONS HERE

                    if (fieldName == "EmpName")
                    {

                        myMergeField.Select();

                        // wordApp.Selection.TypeText("محمد السيد زكى");
                        wordApp.Selection.TypeText(this.Reqested_emp.Name);

                    }
                }
            }
        }
        catch (Exception e)
        {
            MessageBox.show(e.Message);
        }
    }

способ загрузки

string sql = @" select * from Agaza_template where template_id = " + agaza_id + ";";
                if (Form1.conn.State != ConnectionState.Open)
                {
                    Form1.conn.Open();
                    SqlCommand command = new SqlCommand(sql, Form1.conn);
                    SqlDataReader reader = command.ExecuteReader();
                    // reader.Read();

                    //if (reader.HasRows)

                    if (reader.Read())
                    {
                        byte[] b = (byte[])reader[2];

                        //  string s = Path.GetFileName(reader[1].ToString());
                        string s = reader[1].ToString();
                        string result = Path.GetTempPath();
                         file_temp_name = result + s;
                        FileStream fs = new FileStream(result + s, FileMode.Create);


                        fs.Write(b, 0, b.Length);
                        fs.Close();



                    }
                }


                Form1.conn.Close();

            }

Похоже, вы используете Word Interop API (Microsoft.Office.Interop.Word). Так ли это? Обязательно ли использовать этот API для доступа к документу Word? Если это так, AFAIK, нет возможности открыть документ (через взаимодействие Word) с Stream. Могут быть некоторые обходные пути Interop, но я бы порекомендовал продолжить путь, по которому вы уже идете. Я бы сохранил файл в папке Temp, доступ к которой можно получить с помощью переменных среды (см. этот вопрос и его ответы). Пожалуйста, дайте мне знать, если я неправильно понимаю ваш вопрос.

user8061994 11.09.2018 00:28

точно, как вы говорите, но у меня проблемы с методом, который программа должна быть быстрее, чем запись и чтение с жесткого диска, поэтому программа останавливается, поэтому я использую Thread.Sleep (5000); что делает программу отложенной

Mohamed Embaby 11.09.2018 00:46

Простите, я не понимаю, что вы имеете в виду. Я не вижу вызова Thread.Sleep (5000) в вашем коде. Выполняются ли чтение и запись одновременно, и одна операция выполняется быстрее, чем другая?

user8061994 11.09.2018 00:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
33
0

Другие вопросы по теме