Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# печать из Excel / 12 сообщений из 12, страница 1 из 1
19.03.2014, 10:09
    #38590215
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
Скажите пожалуйста,
выгружаю в Excel несколько наборов данных (из вьюхи), каждый набор данных на отдельном листе A4.

Как сделать так, если на один лист A4 помещается несколько наборов данных, то они печатаются на одно листе?

Не понимаю алгоритм...

Заранее благодарен.
...
Рейтинг: 0 / 0
19.03.2014, 11:22
    #38590319
igr_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
vah,

Если данные в Excel не форматируются, то достаточно определить максимальное кол-во строк, которое помещается на листе
...
Рейтинг: 0 / 0
20.03.2014, 19:13
    #38592291
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
igr_okvah,

Если данные в Excel не форматируются, то достаточно определить максимальное кол-во строк, которое помещается на листеИ при этом не забыть про такое явление как размер шрифта, высоту строк, и что ещё немаловажно - масштабирование, равно как и опции печати, позволяющие распечатать весь диапазон печати на одном или нескольких листах...
В общем задача явно требует более глубокого осмысления...
...
Рейтинг: 0 / 0
21.03.2014, 11:27
    #38592701
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
Alex Kuznetsovigr_okvah,

Если данные в Excel не форматируются, то достаточно определить максимальное кол-во строк, которое помещается на листеИ при этом не забыть про такое явление как размер шрифта, высоту строк, и что ещё немаловажно - масштабирование, равно как и опции печати, позволяющие распечатать весь диапазон печати на одном или нескольких листах...
В общем задача явно требует более глубокого осмысления...

в том-то и дело...
у меня в каждой строке одного набора данных разный размер шрифта...

как определить реальный размер выгруженных данных?
...
Рейтинг: 0 / 0
22.03.2014, 14:10
    #38593564
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
vah...
как определить реальный размер выгруженных данных?Что подразумевается под словом "размер" ?
...
Рейтинг: 0 / 0
22.03.2014, 14:27
    #38593569
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
vah,

... генерируйте параллельно в ПДФ, из него и печатайте ...
...
Рейтинг: 0 / 0
22.03.2014, 14:36
    #38593574
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
carrotik... генерируйте параллельно в ПДФ, из него и печатайте ...Шедеврально...
...
Рейтинг: 0 / 0
22.03.2014, 14:42
    #38593577
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
vahНе понимаю алгоритм...
вместо excel используй генераторо отчётов
...
Рейтинг: 0 / 0
22.03.2014, 14:51
    #38593580
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
Alex Kuznetsovcarrotik... генерируйте параллельно в ПДФ, из него и печатайте ...Шедеврально...

...а у вас есть другой вариант? .. Ексель - для расчетов, а ПДФ (как из его названия следует) - для печати ... Код создания ПДФ в си-шарпе почти закопипастить можно из кода генерации Екселя ...
...
Рейтинг: 0 / 0
23.03.2014, 14:27
    #38593933
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
carrotikAlex Kuznetsovпропущено...
Шедеврально...

...а у вас есть другой вариант? .. Ексель - для расчетов, а ПДФ (как из его названия следует) - для печати ... Код создания ПДФ в си-шарпе почти закопипастить можно из кода генерации Екселя ...-Вы кошек любите?
-Да вы их просто готовить не умеете !

Речь, если внимательно прочитать с самого начала, идёт не о том куда сделать вывод, а о том КАК сделать печать данных через Excel нескольких наборов данных на одном листе.
Ваше предложение всё равно, что человеку у которого зуб болит предложить пойти к проктологу - тот тоже зуб может вырвать, но в силу специфики своей работы, скорее предложит сделать это не через рот, а совсем через другой орган.

vah, по сути задаваемого вопроса - предлагаю Вам с помощью макросов в Excel изучить методы печати, которые помогут установить печатаемый диапазон, равно как и указание количества печатаемых страниц и масштаба печати.
Всё это делается штатными способами.
и в итоге может получиться что-то типа такого:
Код: vbnet
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.
    Range("A1:J19").Select
    ActiveSheet.PageSetup.PrintArea = "$A$1:$J$19"
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = "$A$1:$J$19"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveWindow.View = xlNormalView



Кроме того, если захочется потом всё это безобразие сохранить в виде PDF файла, то это тоже можно будет сделать штатными средствами Excel (для Office 2010 по крайней мере), или установив соответствующий драйвер печати.

А для понимания того, какое количество строк из наборов данных можно будет разместить на одной странице - ну так это эе просто - примите волюнтаристское решение и скажите, что к примеру по 20 строк для каждого набора. Тем более, как Вы само упоминали шрифты для отображения данных используются разные.
...
Рейтинг: 0 / 0
23.03.2014, 20:54
    #38594037
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
Alex Kuznetsov,

у меня не сошелся свет клином на Excel. Мне главное распечатать несколько наборов данных на одном листе, если они помещаются на один лист.
...
Рейтинг: 0 / 0
24.03.2014, 14:25
    #38594624
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# печать из Excel
vahAlex Kuznetsov,

у меня не сошелся свет клином на Excel. Мне главное распечатать несколько наборов данных на одном листе, если они помещаются на один лист.Тогда в чём проблема?
Определить количество строк, которое "помещается" на одну страницу?
И что здесь сложного при заранее известной высоте одной строки, известной высоте страницы и известных отступах?
Это наверное очень сложная для программиста задача выполнить вычисления по следующей формуле:
кол-во строк = ОкруглитьВниз((Высота страницы - отступ сверху - отступ снизу) / высота строки )

Это архисложно?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# печать из Excel / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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