|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
Создал я наконец то нужную мне программу, точнее не мне, а начальнику. И на последнем этапе проги нужно перекинуть инфу из созданной таблицы (dbf) с данными в Excel-таблицу. В принципе это делается просто командой: copy to *.xls type xls . Но табличка получается "не красивой", всмысле название полей переносятся из dbf-ника, а вот эти вот названия как раз и "не красивые". Хотелось бы копировать данные из таблицы в уже созданный шаблон (Excel), т.е. в шаблоне находится только "шапка" с "красивыми" названиями столбцов. Ну и соответственно нужный файл сохраняется в отдельном файле. Посмотрел я похожие темы, но конкретного ничего не нашел. В общем как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 14:57 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
de_toros, Ручками COPY TO (lcFile) XL5 AS 1251 USE IN SELECT("balans") ThisForm.lblEcho1.Caption = "Открытие Excel" ThisForm.lblEcho1.Refresh LOCAL XLApp, XLSheet, loRange XLApp = GETOBJECT('', 'excel.application') XLApp.VISIBLE= .F. XLApp.WorkBooks.add(lcFile) XLApp.ActiveWindow.WINDOWSTATE = 2 XLSheet= XLApp.ActiveSheet XLSheet.RANGE("A1").Select XLApp.Selection.EntireColumn.Insert XLSheet.Range("E2:P" + ALLTRIM(STR(XLSheet.UsedRange.Rows.Count +1))).NumberFormat = "#,##0.00" ThisForm.lblEcho1.Caption = "Заполнение" ThisForm.lblEcho1.Refresh WITH XLSheet .RANGE("B1").VALUE = "Код" .RANGE("C1").VALUE = "Книга" .RANGE("D1").VALUE = "Страница" .RANGE("E1").VALUE = "Название" .RANGE("F1").VALUE = "Адрес" .RANGE("G1").VALUE = "Дебет на начало" .RANGE("H1").VALUE = "в т.ч. просрочен" .RANGE("I1").VALUE = "Кредит на начало" .RANGE("J1").VALUE = "Выставлено" .RANGE("K1").VALUE = "Предоплата "+CHR(10)+ "этого месяца" .RANGE("L1").VALUE = "Предоплата "+CHR(10)+ "следующего месяца" .RANGE("M1").VALUE = "Оплата" .RANGE("N1").VALUE = "Дебет на конец" .RANGE("O1").VALUE = "В т.ч. просрочен" .RANGE("P1").VALUE = "Кредит на конец" FOR lnPer = 1 TO .UsedRange.Rows.Count - 2 ThisForm.lblEcho2.Caption = STR(lnPer) + " из " + STR(.UsedRange.Rows.Count-1) ThisForm.lblEcho2.Refresh .RANGE("A" + ALLTRIM(STR(lnPer + 1))).value = lnPer lnItog = .RANGE("N" + ALLTRIM(STR(lnPer + 1))).value IF lnItog > 0 THEN .RANGE("N" + ALLTRIM(STR(lnPer + 1))).value = lnItog .RANGE("P" + ALLTRIM(STR(lnPer + 1))).value = 0 ELSE .RANGE("N" + ALLTRIM(STR(lnPer + 1))).value = 0 .RANGE("P" + ALLTRIM(STR(lnPer + 1))).value = -1*lnItog ENDIF IF INKEY() = 27 THEN EXIT ENDIF NEXT ENDWITH XLSheet.Range("G" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("H" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("I" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("J" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("K" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("L" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("M" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("N" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("O" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLSheet.Range("P" + ALLTRIM(STR(lnPer+1))).FormulaR1C1 = "=SUM(R[-" + ALLTRIM(STR(lnPer))+"]C:R[-1]C)" XLApp.ActiveWindow.SplitColumn = 2 XLApp.ActiveWindow.SplitRow = 1 XLApp.ActiveWindow.FreezePanes = .T. XLApp.Cells.Select XLApp.Selection.Columns.AutoFit XLApp.Selection.AutoFilter XLApp.DisplayAlerts = .F. XLApp.ActiveWorkbook.SaveAs(lcFile, 1) XLApp.DisplayAlerts = .T. XLSheet.RANGE("A1").Select XLApp.VISIBLE= .T. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 19:38 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
Ну если есть готовый шаблон , за чем столько писанины: пример: LOCAL loExcel,lcFileName, lcFullFileName lcFileName = "shab4.xls" IF File(m.lcFileName) lcFullFileName = FullPath(m.lcFileName) ELSE MessageBox("Файл шабона "+m.lcFileName+" не найден") return ENDIF loExcel = CREATEOBJECT( 'EXCEL.APPLICATION') loDoc=m.loExcel.workbooks.Add(m.lcFullFileName) ********Заполнение органзация******************** loDoc.Sheets(1).Range("e53").value=info_org.oblast loDoc.Sheets(1).Range("i53").value=info_org.raion loDoc.Sheets(1).Range("m53").value=info_org.podr loDoc.Sheets(1).Range("e151").value=info_org.oblast loDoc.Sheets(1).Range("i151").value=info_org.raion loDoc.Sheets(1).Range("m151").value=info_org.podr ******** Заполнение даты************** loDoc.Sheets(1).Range("Y34").value=den loDoc.Sheets(1).Range("Y17").value=da1 loDoc.Sheets(1).Range("Y10").value=ya1 ну и т.д WAIT CLEAR m.loExcel.Visible = .T. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 23:19 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
> В общем как это сделать? Ну первое - это поиск. Вариантов много и многие из них описаны. А второе, если есть шаблон (в котором уже сделано форматирование), то как - то так: select Prikaz_194.for_sort, Prikaz_194.Bold,; Prikaz_194.n_dog, Prikaz_194.NUM,; Prikaz_194.naimen,; Prikaz_194.suma,; Prikaz_194.Zadanie,; Prikaz_194.Oplata,; Prikaz_194.Nedoplata,; Prikaz_194.sostoyanie,; padr(trans(NVL((Floor(debitor.Period*10)/10),0.0))+' период',20) as Deb_Count_period; from Prikaz_194 left join debitor on Prikaz_194.N_dog=(transform(debitor.n_plat)+alltrim(debitor.lit)); order by 1; into cursor Prikaz_194 EXPORT TO (lcOut); fields n_dog, NUM,; naimen,; suma,; Zadanie,; Oplata,; Nedoplata,; sostoyanie,; Deb_Count_period; type XL5 wait window "Идет передача данных в Exel. Ждите ..." nowait noclear * Экспорт данных в Exel LOCAL goExcel goExcel = CREATEOBJECT("Excel.Application") if vartype(goExcel) # "O" MessageBox("Excel не найден!!!",0,'Внимание!!!') return endif LOCAL lcShablon, lcNameShablon, lcNameOut lcShablon=App_VS.GetDefaDir()+'Shablon\Prikaz_194.xls' if !file(lcShablon) MessageBox('Не найден файл шаблона. Отчет не будет оформлен!!!'+chr(13)+'Чтобы избежать этой ситуации в будущем создайте файл "'+lcShablon+'" и оформите шапку отчета',0,'Внимание!!!') loShablon=goExcel.WorkBooks.Add() Else loShablon=goExcel.WorkBooks.Open(lcShablon) endif goExcel.DisplayAlerts = .F. loOut=goExcel.WorkBooks.Open(lcOut) loNewDoc=goExcel.WorkBooks.add loShablon.Sheets(1).Copy(loNewDoc.Sheets(1)) loShablon.Close && Удаляем остальные листы нового документа for i=loNewDoc.Sheets.Count to 2 step -1 loNewDoc.Sheets(i).delete EndFor loOut.Sheets(1).Range("A2:I"+Transform(reccount()+1)).Copy loNewDoc.Sheets(1).Range("A17").PasteSpecial(-4163,-4142,.F.,.F.) loOut.Close delete file (lcOut) && Добавляем рамку with loNewDoc.Sheets(1).Range("B16:J"+Transform(reccount()+16)) with .Borders(7) &&xlEdgeLeft ..LineStyle=1 ..Weight = 2 ..ColorIndex = -4105 EndWith with .Borders(8) &&xlEdgeTop ..LineStyle=1 ..Weight = 2 ..ColorIndex = -4105 EndWith with .Borders(9) &&xlEdgeBottom ..LineStyle=1 ..Weight = 2 ..ColorIndex = -4105 EndWith with .Borders(10) &&xlEdgeRight ..LineStyle=1 ..Weight = 2 ..ColorIndex = -4105 EndWith with .Borders(11) &&xlInsideVertical ..LineStyle=1 ..Weight = 1 ..ColorIndex = -4105 EndWith with .Borders(12)&&xlInsideHorizontal ..LineStyle=1 ..Weight = 1 ..ColorIndex = -4105 EndWith EndWith locate for bold DO WHILE FOUND( ) loNewDoc.Sheets(1).Range("A"+transform(recno()+16)+":J"+transform(recno()+16)).Font.Bold=.t. CONTINUE ENDDO *loNewDoc.ErrorCheckingOptions.NumberAsText = .F. *loNewDoc.Save * Удаляем временный файл *.XLS wait clear *loNewDoc.Sheets(1).Activate goExcel.DisplayAlerts = .T. goExcel.Visible = .T. release goExcel Return Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 05:55 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
Спасибо всем за помощь. Из-за недостатка времени для разбирания кода программы, пока применил вариант от "alextashk". Будет свободное время рассмотрю поподробнее другие. У меня теперь другая проблема, созданный у себя exe-шник запускаю у себя на компе - все путем! Переношу прогу на другой комп, где она и должна быть установлена - ни фига не работает. Сначала ругалась на MSVCR71.dll. После переброски данной dll, прога ваще перестала реагировать, только сморгнет и тишина. Естественно на этом компе не установлен дистрибутив VFoxPro. Можно ли как-нибудь решить данную проблему без установки VFoxPro? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 11:40 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
de_torosСпасибо всем за помощь. Из-за недостатка времени для разбирания кода программы, пока применил вариант от "alextashk". Будет свободное время рассмотрю поподробнее другие. У меня теперь другая проблема, созданный у себя exe-шник запускаю у себя на компе - все путем! Переношу прогу на другой комп, где она и должна быть установлена - ни фига не работает. Сначала ругалась на MSVCR71.dll. После переброски данной dll, прога ваще перестала реагировать, только сморгнет и тишина. Естественно на этом компе не установлен дистрибутив VFoxPro. Можно ли как-нибудь решить данную проблему без установки VFoxPro? Можно и нужно. ПрочитавЮ например, Вот это ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 11:49 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
Сходите на http://forum.foxclub.ru/list.php?29 и изучите пункт 2 "Частозадаваемые вопросы ..." Там есть ответы на все ваши вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 11:51 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
54321зайчик, Все почитал, понял что нужно в начале программы поставить команду READ EVENTS. Но после этого, при запуске проги она выдает белый экран и все, никаких действий. В чем загвоздка? Если что, в моей программе нет не меню, не формы. Пользователь вводит с клавы два числа по команде: get, ну и плюс к этому идет открытие файла через команду: locfile, а дальше идет обработка базы данных с выгрузкой в excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 12:29 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
de_torosВсе почитал, понял что нужно в начале программы поставить команду READ EVENTS. Я конечно не зайчик, но осмелюсь уверить, что читали очень плохо. Одни слова "в начале программы" все сразу об этом говорят. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 12:52 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
проходящий., Я тогда не понимаю. А где нужно ставить эту команду: READ events? Или я не правильно выразился по поводу слова "программы", ну ладно, тогда будет "главный файл проекта" он же единственннный prg-шник в данном проекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 13:15 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
de_torosпроходящий., Я тогда не понимаю. А где нужно ставить эту команду: READ events? Или я не правильно выразился по поводу слова "программы", ну ладно, тогда будет "главный файл проекта" он же единственннный prg-шник в данном проекте. Ну вот это уже намного ближе к истине. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 13:29 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
проходящий., Нахождение истинны это, конечно, хорошо, но вопрос то остался... Чего делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 13:34 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
de_torosпроходящий., Нахождение истинны это, конечно, хорошо, но вопрос то остался... Чего делать? Для этого надо увидеть этот самый единственный прг. Только желательно перед постингом его сюда воспользоваться пунктом Buetify контекствного меню фокса и местным тэгом SRC. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 13:40 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
проходящий., Ок, напишу, только попозже. Сейчас срочно вызывают на объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 13:45 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
проходящий., Вот примерно половина текста проги: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 15:39 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
de_toros, И что дальше? Приведенный кусок только и будет "смаргивать". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 15:42 |
|
Перекидование инфы из таблицы в шаблон Excel.
|
|||
---|---|---|---|
#18+
проходящий., По идее смаргивать эта часть не должна, по крайней мере в начале программы. Там пользователь должен ввести с клавы два значения и выбрать нужный текстовый файл, ну а потом идет сам процесс обработки данных. На всякий случай выкладываю концовку программы. Есть еще середина проги, но там ни чего интересного, одни SELECT. В общем вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 16:00 |
|
|
start [/forum/topic.php?fid=41&msg=35692868&tid=1587008]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 153ms |
0 / 0 |