Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Формирование отчета / 25 сообщений из 102, страница 1 из 5
17.03.2005, 14:00
    #32965896
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
Есть таблица состоящая из 2 колонок,в первой колонке находятся названия работ,во второй их колличество.Названия статичны,их 10 штук,а вот колличество меняется в зависимости от sql запроса.
Я хочу чтобы при нажатии на кнопочку на моем фрейме вызывался Excel,в котором будет отображаться эта табличка.Как сделать,макросы что-ли использовать?
Большое спасибо
...
Рейтинг: 0 / 0
17.03.2005, 14:28
    #32965972
TableTest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
Если работаем с SWT то можно так.
Пишем даты таблицы в test.csv потом так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 import  org.eclipse.swt.program.Program;

 public   class  Test {
   public  Test() {
  }

   public   static   void  main(String[] args) {
    String[] extensions = Program.getExtensions();

    System.out.println("-----------------------------------");
     for  ( int  i =  0 ; i < extensions.length; i++) {
      System.out.println(" --> " + extensions[i]);
    }
    System.out.println("-----------------------------------");

    Program excel = Program.findProgram(".csv");
    String name = excel.getName();
    excel.execute("test.csv");
  }

}
...
Рейтинг: 0 / 0
17.03.2005, 14:44
    #32966027
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
Что такое SWT(только не пинайте сильно),можно по подробнее описать,что именно вы имели ввиду.Работаю в билдере.Спасибо
...
Рейтинг: 0 / 0
17.03.2005, 14:55
    #32966069
black zorro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
товарищ предлагает сохранить результат выборки в текстовой файл и потом запустить excel наподобие:
Код: plaintext
1.
2.
   txt = "excel и_имя_файла"
            Runtime.getRuntime().exec(txt);
как вариант если нужно использовать сохранение с формтированием то http://jakarta.apache.org/poi/
...
Рейтинг: 0 / 0
17.03.2005, 14:57
    #32966084
садомазо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
peter6636нажатии на кнопочку на моем фрейме
чисто из любопытства: фреймом в данном случае что является? JFrame?
...
Рейтинг: 0 / 0
17.03.2005, 15:04
    #32966103
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
садомазо peter6636нажатии на кнопочку на моем фрейме
чисто из любопытства: фреймом в данном случае что является? JFrame?
Да,а что?
...
Рейтинг: 0 / 0
17.03.2005, 15:16
    #32966138
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
black zorroтоварищ предлагает сохранить результат выборки в текстовой файл и потом запустить excel наподобие:
Код: plaintext
1.
2.
   txt = "excel и_имя_файла"
            Runtime.getRuntime().exec(txt);
как вариант если нужно использовать сохранение с формтированием то http://jakarta.apache.org/poi/
как это,типа так что-ли: Runtime.getRuntime().exec(txt);,где
txt="C:/Program Files/Microsoft Office/OFFICE11/EXCEL.EXE"+"my.txt" или как?
...
Рейтинг: 0 / 0
17.03.2005, 15:39
    #32966198
black zorro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
да
а что вариант с коротким именем файла не работает ?
зачем мучаться с абсолютными путями ?
...
Рейтинг: 0 / 0
17.03.2005, 15:53
    #32966243
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
Excel пишет,что не удается найти файл my.doc,он у меня там полюбому есть,что за фигня
...
Рейтинг: 0 / 0
17.03.2005, 16:03
    #32966276
пробел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
peter6636Excel пишет,что не удается найти файл my.doc,он у меня там полюбому есть,что за фигняа полный путь указываешь к файлу? а в полном пути пробелов нет?
...
Рейтинг: 0 / 0
17.03.2005, 16:29
    #32966370
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"
...
Рейтинг: 0 / 0
17.03.2005, 16:33
    #32966382
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
peter6636Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"

Уже здесь говорили - http://jakarta.apache.org/poi/
...
Рейтинг: 0 / 0
17.03.2005, 16:36
    #32966395
пробел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
peter6636Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"хм. а сейчас - как?
...
Рейтинг: 0 / 0
17.03.2005, 16:38
    #32966401
пробел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
пробел peter6636Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"хм. а сейчас - как?
разве так нельзя сохранить в текстовый файл:

пример файла:
Код: plaintext
1.
2.
3.
4.
Имя заявки;Количество
Работа уборщиков мусора;123
Работа программистов;100
Работа начальников;135

PS Количество, кстати, с одной "л" пишется
...
Рейтинг: 0 / 0
17.03.2005, 16:53
    #32966456
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
пробел пробел peter6636Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"хм. а сейчас - как?
разве так нельзя сохранить в текстовый файл:

пример файла:
Код: plaintext
1.
2.
3.
4.
Имя заявки;Количество
Работа уборщиков мусора;123
Работа программистов;100
Работа начальников;135

PS Количество, кстати, с одной "л" пишется
А 123,100,135 должны подставляться динамически
...
Рейтинг: 0 / 0
17.03.2005, 16:54
    #32966458
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
wessen peter6636Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"

Уже здесь говорили - http://jakarta.apache.org/poi/
Если бы я еще понимал что там написано,ни одной строчки кода нет,может на русском есть
...
Рейтинг: 0 / 0
17.03.2005, 16:55
    #32966462
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
to peter:
Если хочешь, давай аську, расскажу подробнее как пользоваться poi.
Я уже немного наловчился в построении таких отчетов.
Сам этим занимаюсь :)
...
Рейтинг: 0 / 0
17.03.2005, 17:09
    #32966502
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
GMaxto peter:
Если хочешь, давай аську, расскажу подробнее как пользоваться poi.
Я уже немного наловчился в построении таких отчетов.
Сам этим занимаюсь :)
Я бы с удовольствием,да у меня отрубили аську на работе,уроды такие,буду очен очень благодарен,если ты мне может по почте расскажешь как и что.
Спасибо.
...
Рейтинг: 0 / 0
17.03.2005, 17:12
    #32966507
пробел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
peter6636 пробел пробел peter6636Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"хм. а сейчас - как?
разве так нельзя сохранить в текстовый файл:

пример файла:
Код: plaintext
1.
2.
3.
4.
Имя заявки;Количество
Работа уборщиков мусора;123
Работа программистов;100
Работа начальников;135

PS Количество, кстати, с одной "л" пишется
А 123,100,135 должны подставляться динамически
блин-на! дак файл текстовый и формируй динамически! йопта!
...
Рейтинг: 0 / 0
17.03.2005, 17:17
    #32966517
пробел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
пробел peter6636 пробел пробел peter6636Ok,файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"хм. а сейчас - как?
разве так нельзя сохранить в текстовый файл:

пример файла:
Код: plaintext
1.
2.
3.
4.
Имя заявки;Количество
Работа уборщиков мусора;123
Работа программистов;100
Работа начальников;135

PS Количество, кстати, с одной "л" пишется
А 123,100,135 должны подставляться динамически
блин-на! дак файл текстовый и формируй динамически! йопта!
1. пишешь в файл в том формате, который я тебе описал выше (файл называешь test.csv)
2. вызываешь exec("PATH_TO_EXCEL", "PATH_TO_TEST.CSV")

ага?
...
Рейтинг: 0 / 0
17.03.2005, 17:48
    #32966620
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
Здесь качаем POI
В скаченном архиве в папке /docs/hssf/quick-guide.pdf приведены примеры основных фишек.

Вот тебе пример построения отчета, рабочий.
Код: 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.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
 import  org.apache.poi.hssf.usermodel.*;
 import  org.apache.poi.hssf.util.HSSFColor;
 import  java.io.IOException;
 import  java.io.FileOutputStream;

 public   class  OutToExcell {
    // Данные для отчета
     static   int [] num = { 1 , 2 , 3 };
     static  String[] name = {"Наташа","Лена","Катя"};
     static  String[] tel = {"465-23-16","563-23-12","905-16-13"};

     public   static   void  main (String[] args) {
        // Создем книгу Excell
        HSSFWorkbook wb =  new  HSSFWorkbook();
        // Создаем лист
        HSSFSheet sheet1 = wb.createSheet("Report");
        // Задаем ширину первых трех столбцов
        sheet1.setColumnWidth(( short ) 0 , ( short ) ( 256 * 10 ));
        sheet1.setColumnWidth(( short ) 1 , ( short ) ( 256 * 20 ));
        sheet1.setColumnWidth(( short ) 2 , ( short ) ( 256 * 20 ));

        // Создаем шрифт для заголовка таблицы
        HSSFFont font01Bold = wb.createFont();
        font01Bold.setFontHeightInPoints(( short ) 8 );
        font01Bold.setFontName("Times New Roman");
        font01Bold.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

        // Создаем шрифт для данных
        HSSFFont font01Normal = wb.createFont();
        font01Normal.setFontHeightInPoints(( short ) 8 );
        font01Normal.setFontName("Times New Roman");
        font01Normal.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);

        // Создаем стиль ячейки для заголовка таблицы
        HSSFCellStyle cellstyleTblHdr = wb.createCellStyle();
        cellstyleTblHdr.setFont(font01Bold);
        cellstyleTblHdr.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        cellstyleTblHdr.setWrapText(true);
        cellstyleTblHdr.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
        cellstyleTblHdr.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
        cellstyleTblHdr.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
        cellstyleTblHdr.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
        cellstyleTblHdr.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        cellstyleTblHdr.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);
        cellstyleTblHdr.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

        // Создаем стиль ячейки для данных в таблице.
        HSSFCellStyle cellstyleTblLeft = wb.createCellStyle();
        cellstyleTblLeft.setFont(font01Normal);
        cellstyleTblLeft.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        cellstyleTblLeft.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        cellstyleTblLeft.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        cellstyleTblLeft.setBorderRight(HSSFCellStyle.BORDER_THIN);
        cellstyleTblLeft.setWrapText(true);
        cellstyleTblLeft.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);

        // Создаем объекты для работы со столбцами и строками
        HSSFCell cell;
        HSSFRow row;

        // Дальше рисуем заголовок таблицы
        // Создаем строку с номером 0. Ну типа первая строка.
        row = sheet1.createRow(( short ) 0 );

        // Заполняем шапку таблицы
        // Столбец 0
        cell = row.createCell(( short ) 0 );            // Создаем ячейку
        cell.setEncoding(cell.ENCODING_UTF_16);     // Это чтобы русский шрифт нормально отображался
        cell.setCellStyle(cellstyleTblHdr);         // Показываем какой стиль для ячейки использовать
        cell.setCellValue("Номер");                 // Пишем значение в ячейку

        // Столбец 1
        cell = row.createCell(( short ) 1 );
        cell.setEncoding(cell.ENCODING_UTF_16);
        cell.setCellStyle(cellstyleTblHdr);
        cell.setCellValue("Имя");

        // Столбец 2
        cell = row.createCell(( short ) 2 );
        cell.setEncoding(cell.ENCODING_UTF_16);
        cell.setCellStyle(cellstyleTblHdr);
        cell.setCellValue("Телефон");

        // Шапка заполнена
        // Побежали по массиву.
         int  r =  0 ;
         while  (r <  3 ) {
            // Создаем очередную строку
            row = sheet1.createRow(( short )r+ 1 );

            // И как и выше создаем ячейки и пишем в них данные из массива
            cell = row.createCell(( short ) 0 );
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellStyle(cellstyleTblLeft);
            cell.setEncoding(cell.ENCODING_UTF_16);
            cell.setCellValue(num[r]);

            cell = row.createCell(( short ) 1 );
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellStyle(cellstyleTblLeft);
            cell.setEncoding(cell.ENCODING_UTF_16);
            cell.setCellValue(name[r]);

            cell = row.createCell(( short ) 2 );
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellStyle(cellstyleTblLeft);
            cell.setEncoding(cell.ENCODING_UTF_16);
            cell.setCellValue(tel[r]);
            r++;

    }

        // Пишем все полученное  файл
        FileOutputStream fileOut;
         try  {
            fileOut =  new  FileOutputStream("c:/report.xls");
            wb.write(fileOut);
            fileOut.close();
        }
         catch  (IOException e) {
        }

    }
}

Если что непонятно, спрашивай :)

P.S. Все имена и телефоны вымышлены.
...
Рейтинг: 0 / 0
17.03.2005, 17:57
    #32966656
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
2 peter6636 > файл он находит,данные тоже запихнем как-то туда,но как мне их запихнуть
так,чтобы оно все было красиво,т.е. чтобы данные о типе заявок были строго под колонкой с названием "Имя заявки",а колличество под колонкой "Колличество"

Нужно распределить - кто , что должен делать, по-моему:
Java приложение должно получать данные из базы и затем передать их, что возможно только через файл (если Jakarta POI не использовать, тоже сейчас только глянул) на обработку Excel с его запуском ,как описано выше. А в Excel'ком файле уже должен быть VBA код, ответственный за представление данных, которые Excel возьмет из файла.
Это по моему наиболее разумный вариант, т.к. Excel является приложением , наиболее активно используемым для анализа и представления данных пользователю, значит оно и должно быть ответсвенно за представление информации человеку.
И в любом случае, если речь о представлении надо переносить эти функции в интсрумент , которы йзаненимается представлением данных, даже при использовании POI невозможно будет не разбираться с моделью объектов Excel, так что естественнее программировать сам Excel'кий файл.
...
Рейтинг: 0 / 0
17.03.2005, 18:04
    #32966687
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
kefiИ в любом случае, если речь о представлении надо переносить эти функции в интсрумент , которы йзаненимается представлением данных, даже при использовании POI невозможно будет не разбираться с моделью объектов Excel, так что естественнее программировать сам Excel'кий файл.

Посмотри пример выше. По моему никаких объектов Excell там нет. Чистая Java. И какая разница где формировать представление? В моем случае надо писать только на Java. В твоем, еще и макрос. Я от этого варианта отказался. ИМХО через java удобнее.
...
Рейтинг: 0 / 0
17.03.2005, 18:15
    #32966732
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
2 GMax >
кстати, что там качать - из папки Dev или Release? И все выкачивать ?
----------------
2 peter6636 >
Ну вот GMax как раз привел альтернативный вариант , но он и показывает, что без изучения компонентной модели Excel не обходится, а программирование несравненно более трудоемкое и по всей видимости менее функциональное по своим возможностям ( скажем - можно там обработать объект PivotTable ? ),
чем то же программирование в VBA Excel.

PS. Мне не раз доводилось встречать в разных языках программирование объектов чужих приложений и всегда я не понимал,- зачем это сделано, так это обстоит и сейчас.
...
Рейтинг: 0 / 0
17.03.2005, 18:21
    #32966739
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование отчета
GMAx> Посмотри пример выше. По моему никаких объектов Excell там нет.

Как это нет, - а все эти листы,ячейки,фонты, и пр. ? Разве это не требует изучения. Хотя, это всего лишб является отражением тех же объектов Excel.
Кстати, как там есть аналоги ВСЕХ объектов Excel или только некоторых?

И какая разница где формировать представление?
Огромная. Я попытался уже это объясняить выше. Разница в правильности инфраструктуры разрабатываемого приложения.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Формирование отчета / 25 сообщений из 102, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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