powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как вам такой код выгрузки в Эксель?
25 сообщений из 90, страница 1 из 4
как вам такой код выгрузки в Эксель?
    #38268831
Фотография 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
как вам такой код выгрузки в Эксель?
    #38268853
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahкак вам такой код выгрузки в Эксель?
Своё мнение я сформулирую так:
1. код явно написан на коленке вчерашним студентом;
2. код выкинуть, студента обучить, или уволить.
...
Рейтинг: 0 / 0
как вам такой код выгрузки в Эксель?
    #38268865
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

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

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

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

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

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

Мало?

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

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

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


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