powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Word.Application
9 сообщений из 9, страница 1 из 1
Word.Application
    #34974714
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Подскажите пожалуйста, как можно из источника данных как например OracleDataReader выгрузить данные запроса в документ Word?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim comm1 As OracleCommand = New OracleCommand("select ja.address, ja.house, ja.appartment, ja.phone, ja.fax, ja.zip, ja.passport from table_addresses", conn)
comm1.CommandType = CommandType.Text
Dim dr As OracleDataReader
dr = comm1.ExecuteReader
Dim wda As New Word.Application
Dim wdd As New Word.Document
wdd = wda.Documents.Add
wdd.Range.Text = "Телефон"
.........................................
.........................................
dr.Read()
--поля запроса--
wda.Visible = True
End Sub
...
Рейтинг: 0 / 0
Word.Application
    #34974832
tatra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял, то нужен доступ к тексту документа. Привожу участок кода - может что интересное найдете.

object oMissing = System.Reflection.Missing.Value;
Word._Application oWord = null;
Word._Document oDoc = null;
try {

bool visible = false;
object vis = (object)visible;
oWord = new Word.Application();
WriteTextToLog("Открыто приложение WORD");
oWord.Visible = visible;
object path = "http://home/" + docFile.Url;
oDoc = oWord.Documents.Open(ref path, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref vis, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
WriteTextToLog("Открыт для редактирования документ " + path.ToString());

//Алгоритм подстановки полей
int openindex;
int closeindex;
int startindex;
string strLine;
Hashtable docFields = new Hashtable();
foreach (Word.Paragraph par in oDoc.Paragraphs) {
startindex = 0;
openindex = -1;
closeindex = -1;
do {
try {
openindex = par.Range.Text.IndexOf("<", startindex);
startindex = openindex;
closeindex = par.Range.Text.IndexOf(">", startindex);
startindex = closeindex;
strLine = par.Range.Text.Substring(openindex + 1, closeindex - openindex - 1);
string oldValue = "<" + strLine + ">";
string newValue = document[strLine].ToString();
docFields.Add(oldValue, newValue);
}
catch (ArgumentOutOfRangeException er) { }
catch (NullReferenceException er) { }
catch (ArgumentException er) { }
} while (openindex != -1);
foreach (object key in docFields.Keys) {
par.Range.Text = par.Range.Text.Replace(key.ToString(), docFields[key].ToString()); // ЗДЕСЬ КЛЮЧЕВАЯ СТРОКА
}
docFields.Clear();
}
WriteTextToLog("Документ изменен");
oDoc.Save();
WriteTextToLog("Документ сохранен.");
}
catch (Exception er) {
WriteTextToLog(string.Format("Ошибка : {0}", er.Message));
}
finally {
try {
object SaveChanges = Word.WdSaveOptions.wdSaveChanges;
oDoc.Close(ref SaveChanges, ref oMissing, ref oMissing);
WriteTextToLog("Документ закрыт");
}
catch (Exception er) {
WriteTextToLog("Ошибка: Невозможно закрыть документ");
}
finally {
try {
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
WriteTextToLog("Приложение WORD закрыто");
}
catch (Exception er) {
WriteTextToLog("Невозможно закрыть приложение WORD");
}
}
}
...
Рейтинг: 0 / 0
Word.Application
    #34976850
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем. Мне необходимо вытащить данные запроса в Word. Короче говоря у меня есть запрос, который вытаскивает анкетные данные сотрудника, запрашивая его номер телефона (это параметр). Так вот нужно чтобы эти данные выгружались в Word-ий документ.
...
Рейтинг: 0 / 0
Word.Application
    #34976854
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До этого я вытаскивала данные в EXCEL, но из-за некоторого несоответствия данных, к примеру у меня в запросе есть такое поле как "house" (номер дома). И если значение этого поля будет к пимеру 20/8 в
EXCEL он вытаскивает как "20 авг."

Dim dr As OracleDataReader
dr = commIMEI.ExecuteReader

Dim app As New Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet

wb = app.Workbooks.Add
ws = wb.Worksheets(1)
dr.Read()
ws.Cells(4, 3) = dr("msisdn")
ws.Cells(5, 3) = dr("sign_fio")
ws.Cells(8, 3) = dr("name_r")
ws.Cells(9, 3) = dr("city")
ws.Cells(10, 3) = dr("region")
ws.Cells(11, 3) = dr("address")
ws.Cells(12, 3) = dr("house")
ws.Cells(13, 3) = dr("appartment")
ws.Cells(14, 3) = dr("phone")
ws.Cells(15, 3) = dr("fax")
ws.Cells(16, 3) = dr("zip")
ws.Cells(17, 3) = dr("passport")
dr.Close()
app.Visible() = True
End Sub
Поэтому я хочу сделать вытащить их в Word.
...
Рейтинг: 0 / 0
Word.Application
    #34976908
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Excel
вариант № 1
Код: plaintext
ws.Cells( 12 ,  3 ) = "'" & dr("house")
вариант № 2
Код: plaintext
1.
ws.Cells( 12 ,  3 ).NumberFormat = "@"
ws.Cells( 12 ,  3 ) = dr("house")
...
Рейтинг: 0 / 0
Word.Application
    #34977450
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо получилось
...
Рейтинг: 0 / 0
Word.Application
    #34978396
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот у меня еще такой вопрос. В общем есть запрос где я вытаскиваю дату первого звонка и в таблице из которой я беру эту дату значение поля "START_TIME" к примеру такое 30.11.2007 8:15:46. И вот мне нужно это значение вытащить тоже в EXCEL. И вот я пишу так
ws.Cells(24, 3) = dr("start_time") --а программа выдает ошибку
IndexOutOfRangeException was unhandled

Я потом попробовала использовать функцию Format()

ws.Cells(24, 3) = Format(dr("start_time"), "dd-mm-yyyy"), но VB подчеркивает эту строку и пишет, что

Argument not specified for parametr 'format' of 'Public SharedFunction Format (enum Type As System.Type, value As Object, Format As String) As String'

Не подскажите, что нужно добавить?
...
Рейтинг: 0 / 0
Word.Application
    #34978930
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_iА вот у меня еще такой вопрос. В общем есть запрос где я вытаскиваю дату первого звонка и в таблице из которой я беру эту дату значение поля "START_TIME" к примеру такое 30.11.2007 8:15:46. И вот мне нужно это значение вытащить тоже в EXCEL. И вот я пишу так
ws.Cells(24, 3) = dr("start_time") --а программа выдает ошибку
IndexOutOfRangeException was unhandled

Я потом попробовала использовать функцию Format()

ws.Cells(24, 3) = Format(dr("start_time"), "dd-mm-yyyy"), но VB подчеркивает эту строку и пишет, что

Argument not specified for parametr 'format' of 'Public SharedFunction Format (enum Type As System.Type, value As Object, Format As String) As String'

Не подскажите, что нужно добавить?
А вар-т г-на vkodor по выгрузке в Эксель поля ДБ в текстовом формате Вам тут не подходит? Дешево и просто.
ЗЫ офф: как-то сами таблицы БД недружественно к клиенту выполнены.
...
Рейтинг: 0 / 0
Word.Application
    #34978972
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если текстовый вариант подходит, то заветами г-на vkodor пишите:

Код: plaintext
1.
ws.Cells( 24 ,  3 ).NumberFormat = "@"
ws.Cells( 24 ,  3 ) = CStr(dr("start_time") )
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Word.Application
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]