Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вам такой код выгрузки в Эксель? / 25 сообщений из 90, страница 1 из 4
22.05.2013, 18:12
    #38268831
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Скажите пожалуйста,

Код: c#
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.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.Data.SqlClient;

namespace isup
{
    public partial class dlg_dat : Form
    {
        public main t;
        public dlg_dat()
        {
            InitializeComponent();
        }

        public dlg_dat(main _t)
        {
            t = _t;
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                    Excel.Application ExcelApp = new Excel.Application();

                    Microsoft.Office.Interop.Excel.Workbook ExcelWorkBook;
                    Microsoft.Office.Interop.Excel.Worksheet ExcelWorkSheet;

                    ExcelWorkBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value);
                    ExcelWorkSheet = (Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);


            
            

                    conn con = new conn();
                    SqlDataReader command_r;

                    using (SqlConnection connection = new SqlConnection(con.str_conn("www")))
                    {

                        SqlCommand command = new SqlCommand("ee_rep2 ", connection);
                        command.CommandType = CommandType.StoredProcedure;
                        SqlParameter dat1 = new SqlParameter("@s", SqlDbType.DateTime);
                        SqlParameter dat2 = new SqlParameter("@e", SqlDbType.DateTime);
                        dat1.Value = dateTimePicker1.Text;
                        dat2.Value = dateTimePicker2.Text;
                        command.Parameters.Add(dat1);
                        command.Parameters.Add(dat2);
                        connection.Open();
                        command_r = command.ExecuteReader();

                        int ColNum;
                        int RowNum=0;
                        ColNum = command_r.FieldCount;

                        while (command_r.Read())
                        {
                            RowNum++;
                        }

                        object[,] d = new object[RowNum, ColNum];
                


                        int i = 0;
                        command_r.Close();
                        command_r = command.ExecuteReader();
                        while (command_r.Read())
                        {
                            for (int j = 0; j < ColNum ; j++)
                            {
                                d[i, j] = command_r.GetSqlString(j).ToString();
                            }
                            i++;
                        }

                        int rows = d.GetUpperBound(0) + 1;
                        int cols = d.GetUpperBound(1) + 1;

                        Excel.Worksheet sheet = (Excel.Worksheet)ExcelApp.ActiveSheet;

                        object leftTop = ExcelWorkSheet.Cells[2, 2];
                        object rightBottom = ExcelWorkSheet.Cells[RowNum+1, ColNum+1];

                        Excel.Range range = ExcelWorkSheet.get_Range(leftTop, rightBottom);
                        range.Value2 = d;
                        setStyle(range);

                        ExcelApp.Visible = true;
                    }

                    Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void setStyle(Excel.Range range)
        {
            range.EntireColumn.AutoFit();
            range.EntireRow.AutoFit();
            object[] border = new object[] { Excel.XlBordersIndex.xlEdgeLeft, 
                                                Excel.XlBordersIndex.xlEdgeTop, 
                                                Excel.XlBordersIndex.xlEdgeBottom, 
                                                Excel.XlBordersIndex.xlEdgeRight,
                                                Excel.XlBordersIndex.xlInsideVertical,
                                                Excel.XlBordersIndex.xlInsideHorizontal};

            for (int i = 0; i < border.Length; i++)
            {
                range.Borders[(Excel.XlBordersIndex)border[i]].LineStyle = Excel.XlLineStyle.xlContinuous;
                range.Borders[(Excel.XlBordersIndex)border[i]].Weight = Excel.XlBorderWeight.xlThin;
                range.Borders[(Excel.XlBordersIndex)border[i]].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
            }
        }

        private void dlg_dat_Load(object sender, EventArgs e)
        {
            dateTimePicker1.Value = DateTime.Now.AddDays(-7);
            dateTimePicker2.Value = DateTime.Now;

        }
    }
}




Заранее благодарен.
...
Рейтинг: 0 / 0
22.05.2013, 18:21
    #38268853
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
vahкак вам такой код выгрузки в Эксель?
Своё мнение я сформулирую так:
1. код явно написан на коленке вчерашним студентом;
2. код выкинуть, студента обучить, или уволить.
...
Рейтинг: 0 / 0
22.05.2013, 18:26
    #38268865
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
vah,

.. а почему просто не подцепить источник данных к Екселевскому листу?
...
Рейтинг: 0 / 0
22.05.2013, 23:06
    #38269203
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Лапшекод просто ужасен. Не считая даже того, что с экселем нужно работать через open xml sdk, а не через этот убогий интероп.
...
Рейтинг: 0 / 0
22.05.2013, 23:47
    #38269233
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
МСУ,

а как же генераторы отчётов?
...
Рейтинг: 0 / 0
23.05.2013, 00:35
    #38269262
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
ничего по существу...
...
Рейтинг: 0 / 0
23.05.2013, 00:38
    #38269265
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
vahничего по существу...
это о стартовом посте?
...
Рейтинг: 0 / 0
23.05.2013, 08:53
    #38269433
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
vahничего по существу...

по существу:
0. Выкинуть старый код
1. Разбить приложения на классы, выполняющие свои функции
2. Классы разбить по уровням
...
Рейтинг: 0 / 0
23.05.2013, 09:38
    #38269482
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
ИзопропилМСУ, а как же генераторы отчётов?
Они рулят.
...
Рейтинг: 0 / 0
23.05.2013, 15:23
    #38270259
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
МСУа не через этот убогий интероп.Не умеешь пользоваться!
...
Рейтинг: 0 / 0
23.05.2013, 15:26
    #38270266
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
vahкак вам такой код выгрузки в Эксель?Код должен быть красивым! Читай Фаулера про рефакторинг. Ну и про архитектуру что-нибудь, где про Data Access Layer написано.
...
Рейтинг: 0 / 0
23.05.2013, 15:46
    #38270310
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Алексей КМСУа не через этот убогий интероп.Не умеешь пользоваться!
...
Рейтинг: 0 / 0
23.05.2013, 15:55
    #38270334
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Алексей ККод должен быть красивым!
Код должен приносить деньги¡
...
Рейтинг: 0 / 0
23.05.2013, 16:01
    #38270353
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
ИзопропилАлексей ККод должен быть красивым!
Код должен приносить деньги¡Не принося при этом геморроя.
...
Рейтинг: 0 / 0
23.05.2013, 17:14
    #38270500
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Такой код не должен быть реализован через жопу интероп, приносить деньги и быть негеморройным
...
Рейтинг: 0 / 0
23.05.2013, 18:54
    #38270712
gpu
gpu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
МСУТакой код не должен быть реализован через жопу интероп, приносить деньги и быть негеморройным
чем вам всем интероп не угодил?
про танцора умолчу дабы не повторяться.
...
Рейтинг: 0 / 0
23.05.2013, 19:28
    #38270753
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
gpuМСУТакой код не должен быть реализован через жопу интероп, приносить деньги и быть негеморройным
чем вам всем интероп не угодил?
про танцора умолчу дабы не повторяться.Аспнетчик, что с него взять...
...
Рейтинг: 0 / 0
23.05.2013, 20:59
    #38270869
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
gpuчем вам всем интероп не угодил?
зависимостью от установленных версий офиса.
использованием COM-сервера - интерактивного приложения(само собой код непригоден для использования в любом сервере приложений, в интерактивном режиме - это запуск дополнительного экземпляра офисного приложения либо получения управление помимо воли пользователя уже запущенным экземпляром)
-----------------------
при наличии SDK, сторонних библиотек, генераторов отчётов, возможности сгенерить совместимый XML/HTML - зачем себе и пользователю трудности создавать?
а вот использование Office Automation из самих офисных приложений(документов или расширений) - совершенно нормально
...
Рейтинг: 0 / 0
23.05.2013, 22:29
    #38270962
gpu
gpu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Изопропилgpuчем вам всем интероп не угодил?
зависимостью от установленных версий офиса.

Я уточню:
AutomationFactory, late binding и никакой привязки к версии офиса.
...
Рейтинг: 0 / 0
23.05.2013, 22:35
    #38270968
gpu
gpu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Изопропил-----------------------
при наличии SDK, сторонних библиотек, генераторов отчётов, возможности сгенерить совместимый XML/HTML - зачем себе и пользователю трудности создавать?

Ну во первых, "сьесть то он сьест..."
но иногда пользовать можно только то,что одобрено генеральной линией партии.
Во вторых, интероп не только полезный мех., т.е. не всегда речь только об отчетах.
...
Рейтинг: 0 / 0
23.05.2013, 22:46
    #38270986
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
gpuт.е. не всегда речь только об отчетах.
обработку данных логичнее инициировать из собственно офисного приложения
...
Рейтинг: 0 / 0
23.05.2013, 23:06
    #38271015
gpu
gpu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Изопропилgpuт.е. не всегда речь только об отчетах.
обработку данных логичнее инициировать из собственно офисного приложения
Здравый смысл не жсегда побеждает.
...
Рейтинг: 0 / 0
24.05.2013, 05:53
    #38271138
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Изопропилgpuчем вам всем интероп не угодил?
зависимостью от установленных версий офиса.Импортируем библиотеку типов Office 97 и нет никакой зависимости.
Изопропилиспользованием COM-сервера - интерактивного приложения(само собой код непригоден для использования в любом сервере приложенийСервер - Бог с ним...
Изопропил, в интерактивном режиме - это запуск дополнительного экземпляра офисного приложения либо получения управление помимо воли пользователя уже запущенным экземпляром)Нажимает кнопку "передать в excel" и не желает его запуска?
Изопропилпри наличии SDK, сторонних библиотек, генераторов отчётов, возможности сгенерить совместимый XML/HTML - зачем ... ?Я вот например хочу передать данные в Excel, не создавая при этом файл на диске. Будет несохранённый документ "Новая книга 1".
...
Рейтинг: 0 / 0
24.05.2013, 09:34
    #38271298
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
gpuчем вам всем интероп не угодил?
1. Наличием обязательной инсталляции офиса на клиенте
2. Проблемами с совместимостью версий офиса
3. Для серверных приложений (трехзенка, веб) MS крайне не рекомендует использовать использовать automation: тут писал http://codearticles.ru/articles/830

Мало?

gpuпро танцора умолчу дабы не повторяться.
Пусть другие танцуют с привязанным к спине газовым баллоном. А мы уж лучше генераторы отчетов покурим или Open XML SDK 2.5
...
Рейтинг: 0 / 0
24.05.2013, 09:37
    #38271305
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как вам такой код выгрузки в Эксель?
Алексей КЯ вот например хочу передать данные в Excel, не создавая при этом файл на диске
Так он всё-равно создается, только в темпе :)

Видишь кролика? А он есть!

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


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