Перейти к содержимому

Фотография

Excelпомощь, консультации...


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 914

#161
DeoN

DeoN
  • Частый гость
  • 77 сообщений


Код макроса на листе DATA.

Private Sub Worksheet_Change(ByVal Target As Range) -- это предопределенная процедура, срабатывает при изменении содержимого листа. то есть при изменении данных в ячейке или диапазоне, при этом адрес ячейки попадает в переменную Terget
    
    CreditStory = Cells(21, 2).Value -- здесь я получил значение изменяемой ячейки
    
    If (Target = Range("B21")) Then -- так как нам не нужно, чтобы процедура отрабатывала ПРИ ЛЮБЫХ ИЗМЕНЕНИЯХ НА ЛИСТЕ, то я проверяю, что измененная ячейка является целевой, нужной мне
        If (CreditStory = "Отсутствует") Then -- думаю, понятно все
            Worksheets("РЕЗЮМЕ").Rows("29:36").EntireRow.Hidden = True -- то же думаю понятно
        Else
            Worksheets("РЕЗЮМЕ").Rows("29:36").EntireRow.Hidden = False
        End If
    End If
End Sub


объяснения в коде

то есть добавите новые условия If (Target = .... и так далее


нет, еще изменяемые ячейки разные хочу прописать.
  • 0

#162
Мэс

Мэс
  • В доску свой
  • 4 926 сообщений
ну так я и пишу - добавляйте новые условия через переменную Target.
Какие проблемы?
Кстати, я работал в Народном и собаку съел на калькуляторах :-))
  • 0

#163
Fidelis

Fidelis
  • В доску свой
  • 2 669 сообщений
всем привет! такая проблема:
с помощью стандартных библиотек экзуль реализована выгрузка данных C# => Excel, кода под рукой к сожалению нет а на работе заблокирована функция постить на форумах( но если очень нужно будет найду пример выложу, так вот имеется сервер куда пользователи подключаются через веб, если запускать проект на самом сервере то при выгрузке открывается экзель, вставляются данные и дальше можно делать что нужно с файлом экзеля, а вот если подключаться как обычный пользователь через веб то при срабатывании события выгрузки ничего не происходит :( (сделала логирование - вижу что метод выгрузки полностью отрабатывает, но на стороне клиента ничего нет), впервые сталкиваюсь с таким, кто-нибудь знает почему так и можно ли решить проблему?
  • 0

#164
Dmitriy_N

Dmitriy_N
  • Гость
  • 49 сообщений

всем привет! такая проблема:
с помощью стандартных библиотек экзуль реализована выгрузка данных C# => Excel, кода под рукой к сожалению нет а на работе заблокирована функция постить на форумах( но если очень нужно будет найду пример выложу, так вот имеется сервер куда пользователи подключаются через веб, если запускать проект на самом сервере то при выгрузке открывается экзель, вставляются данные и дальше можно делать что нужно с файлом экзеля, а вот если подключаться как обычный пользователь через веб то при срабатывании события выгрузки ничего не происходит :( (сделала логирование - вижу что метод выгрузки полностью отрабатывает, но на стороне клиента ничего нет), впервые сталкиваюсь с таким, кто-нибудь знает почему так и можно ли решить проблему?

утра доброго всем, выгрузка может и происходит да только на сервер, расписать можно по подробнее, у меня на атлантисе похожая хрень была выгружалась ДБФка в двухзвенке файл появляется у пользователя а в трехзвенке файла нет, он собака создавался, да только на сервере, я по запарке не правильно указал путь :). А можно вопрос, а что это за стандартные библиотеки - "экзуль реализована выгрузка данных C# => Excel", просто интересно для общего развития :).
  • 0

#165
Fidelis

Fidelis
  • В доску свой
  • 2 669 сообщений

утра доброго всем, выгрузка может и происходит да только на сервер, расписать можно по подробнее, у меня на атлантисе похожая хрень была выгружалась ДБФка в двухзвенке файл появляется у пользователя а в трехзвенке файла нет, он собака создавался, да только на сервере, я по запарке не правильно указал путь :). А можно вопрос, а что это за стандартные библиотеки - "экзуль реализована выгрузка данных C# => Excel", просто интересно для общего развития :).

под стандартными библиотеками я имела ввиду что не создаю XML и не открываю его экзелем (раньше именно так всегда делала так как быстрее и проще, но теперь надо чтоб экзелевские формулы работали а через XML как раз не работают), экзелевские dll-ки подключаю к проекту и создаю конкретно workbook экзель, заполняю данными и так далее. Не знаю как подробнее написать, хотела код принести да флешка дома осталась, а у на работе даже электронка не работает:( завтра постараюсь не забыть.
А как-то можно проверить создается ли на сервере файл, у меня там винда, после выгрузки данных в экзель захожу удаленником на сервер, там тоже ничего нет(.
  • 0

#166
Dmitriy_N

Dmitriy_N
  • Гость
  • 49 сообщений
Всем доброго дня, Fidelis без кода выгрузки трудно что либо понять, проверить создание файла, наверное просто поискать его. С екселем сложнее в том плане что ДБФку программа создавала по любому есть на сервере офис или нет офис программе нафиг не нужен :) - программа просто создавала файл, а вот как поведет себя Ваша программа не обнаружив офиса, не видя кода не возможно точно сказать что либо :). Я помню в юности у нас преподаватель на РСЮТ когда к нему подходили и говорили - А Вы знаете, у меня приемник дома шипит но ничего не ловит, как Вы думаете почему? он отвечал - А вот у моей бабушки зад болит, как ты думаешь это случайно не геморрой... действительно пока не увидишь кода можно лишь гадать и предполагать, нужен код :). удачи Вам Fidelis.
  • 0

#167
Fidelis

Fidelis
  • В доску свой
  • 2 669 сообщений
вобщем принесла наконец код выгрузки в экзель, правда за это время я её реализовала еще через гугловскую библиотеку, проще некуда - кода одна строчка :lol:
но что не так с предыдущей реализацией все-таки тоже интересно, так что прикладываю код, может у кого будут соображения

using System;
using System.Collections.Generic;
using System.Web;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection; 
using System.Data;
using Microsoft.Office.Interop.Excel;

public class ExportExcel
{
	public ExportExcel()
	{
	}

    public void ExcelExport(DataTable dt)
    {
            Excel.Range oRng;
            Excel.Application oXL;

            oXL = new Excel.Application();
            oXL.Visible = true;
            Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
            System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
            excel.Visible = true;
            excel.UserControl = true;
            Excel.Workbook wb = (Excel.Workbook)excel.Workbooks.Add(Missing.Value);
            System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
            Excel.Worksheet ws = (Excel.Worksheet)excel.ActiveSheet;

            ws.Cells[1, 3] = "какие-то данные";

            //Format A1:D1 as bold, vertical alignment = center.
            ws.get_Range("A1", "IV1").Font.Bold = true;
            ws.get_Range("A1", "IV1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

            //AutoFit columns A:D.
            oRng = ws.get_Range("A1", "IV1");
            oRng.EntireColumn.AutoFit();

            //Make sure Excel is visible and give the user control
            //of Microsoft Excel's lifetime.
            oXL.Visible = true;
            oXL.UserControl = true;
        }

  • 0

#168
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений

но что не так с предыдущей реализацией все-таки тоже интересно, так что прикладываю код, может у кого будут соображения

Вот мне тоже интересно, зачем в вашем примере в функцию ExcelExport передается параметр dt типа DataTable. :confused:

Внутри функции с этим dt ничего не делают. И вообще, он там даже не появляется.

Сообщение отредактировал Visual1: 05.10.2011, 16:00:17

  • 0

#169
idaa

idaa
  • Частый гость
  • 60 сообщений


но что не так с предыдущей реализацией все-таки тоже интересно, так что прикладываю код, может у кого будут соображения

Вот мне тоже интересно, зачем в вашем примере в функцию ExcelExport передается параметр dt типа DataTable. :confused:

Внутри функции с этим dt ничего не делают. И вообще, он там даже не появляется.

очевидно же что копирование информации из dt в примере заменено на

ws.Cells[1, 3] = "какие-то данные";

что весьма разумно, т.к. не перегружает пример ненужными деталями.
  • -1

#170
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений

очевидно же что копирование информации из dt в примере заменено на

ws.Cells[1, 3] = "какие-то данные";

Не очевидно. Докажите.

что весьма разумно, т.к. не перегружает пример ненужными деталями.

Ну и заявление. С точностью до наоборот.
  • 0

#171
idaa

idaa
  • Частый гость
  • 60 сообщений


очевидно же что копирование информации из dt в примере заменено на

ws.Cells[1, 3] = "какие-то данные";

Не очевидно. Докажите.

что весьма разумно, т.к. не перегружает пример ненужными деталями.

Ну и заявление. С точностью до наоборот.

кто ж вам виноват что вы читать (или анализировать) не умеете?
показываю один раз. из http://vse.kz/index....8#entry17632998 следует
1) работает локально, не работает удаленно
2) "метод выгрузки полностью отрабатывает" - значит проблем с обработкой данных из dt нет - обработка не падает
3) "срабатывании события выгрузки ничего не происходит" - т.е. не отображается на клиенте
из 1-3 следует что проблема именно в передаче результата клиенту, а не в обработке dt, и вполне разумно работающую часть кода в пример не включать, а заменить кусочком данных, что б было.
  • 0

#172
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений

кто ж вам виноват что вы читать (или анализировать) не умеете?

Хамить не надо. Чем разговоры в такой манере, я лучше буду тратить свое время не на вас, а на что-нибудь более интересное и полезное.

показываю один раз. из http://vse.kz/index....8#entry17632998 следует
1) работает локально, не работает удаленно
2) "метод выгрузки полностью отрабатывает" - значит проблем с обработкой данных из dt нет - обработка не падает
3) "срабатывании события выгрузки ничего не происходит" - т.е. не отображается на клиенте
из 1-3 следует что проблема именно в передаче результата клиенту, а не в обработке dt, и вполне разумно работающую часть кода в пример не включать, а заменить кусочком данных, что б было.

Мой вопрос не касался всего этого. Я спрашивал именно насчет параметра dt, зачем он нужен, если он никак не обрабатывается. Ваш ответ ("очевидно же...") не годится. Из вашего ответа ничего такого не очевидно.
  • 0

#173
Fidelis

Fidelis
  • В доску свой
  • 2 669 сообщений
только не ругайтесь, совсем этого не люблю :(

с таблицей конечно производятся действия

          int j = 1; 
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                ws.Cells[1, j] = dt.Columns[i].ColumnName;
                j++;
            }

         int x = 2; int k = 1;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int v = 0; v < dt.Columns.Count; v++)
                {
                    string s = dt.Rows[i][v].ToString();
                    ws.Cells[x, k] = dt.Rows[i][v].ToString();
                    k++;
                }
                x++;
            }

я действительно исключила эту часть для экономии места в сообщении и в чужих мозгах :)
у idaa получилось очень точное выражение "проблема в передаче результата клиенту", у меня пока новых мыслей не появилось, да и откуда, я не одну неделю с этим билась, кажется моих мозгов просто не хватает :(
  • 0

#174
idaa

idaa
  • Частый гость
  • 60 сообщений

"проблема в передаче результата клиенту"

В самом примере есть только формирование эксельного файла, но нету его пересылки.
Как вариант, серверный вариант должен заканчиваться примено следующим:
- сохранить полученный эксельный файл во временный файл (что-то вроде oXL.Save),
- отправить клиенту (для IIS через Response, предварительно зачистив его от мусора и установив свойства имени файла и его тип, для других технологий в зависимости от их возможностей)
- удалить временный файл

Почему не видно ничего через удаленный доступ.
Если для доступа клиента используется веб-сервер то все запросы от него, как правило, выполняются под системным пользователем, которому еще и взаимодействие с десктопом обычно запрещено. Обечный пользователь при удаленом входе, не видит процессы других пользователей, и соотвествено всего того, что творит веб-сервер. В результате в логи все попадает, а не экране удаленного доступа ничего нет.
  • 1

#175
Fidelis

Fidelis
  • В доску свой
  • 2 669 сообщений
пробовала Save, при этом выдается диалоговое сообщение куда сохранить, только пробовала это на сервере, почему не пришло в голову попробовать тоже самое от клиента :confused: постараюсь попробовать на след неделе :)
  • 0

#176
idaa

idaa
  • Частый гость
  • 60 сообщений

пробовала Save, при этом выдается диалоговое сообщение куда сохранить, только пробовала это на сервере, почему не пришло в голову попробовать тоже самое от клиента :confused: постараюсь попробовать на след неделе :)

я ж сказал "что-то вроде oXL.Save".
это значит что надо окрыть MSDN и посмотреть что еще похоже на Save
а на Save там похоже SaveAs и SaveCopyAs
  • 0

#177
Fidelis

Fidelis
  • В доску свой
  • 2 669 сообщений

я ж сказал "что-то вроде oXL.Save".
это значит что надо окрыть MSDN и посмотреть что еще похоже на Save
а на Save там похоже SaveAs и SaveCopyAs

ну да, я так и пробовала, все отлично сохраняет, но пробовала только на сервере, теперь попробую от клиента.
  • 0

#178
Sherlock

Sherlock
  • В доску свой
  • 1 890 сообщений
Привет, кто умеет, знает как составлять арифметические прогрессии в Экселе?
Изображение
Помогите, как сделать, особенно 1 вопрос? СРОЧНО нужна помощь!!! Инструкцию может напишите, или еще что? Времени в обрез
  • 0

#179
Sherlock

Sherlock
  • В доску свой
  • 1 890 сообщений

Привет, кто умеет, знает как составлять арифметические прогрессии в Экселе?
Изображение
Помогите, как сделать, особенно 1 вопрос? СРОЧНО нужна помощь!!! Инструкцию может напишите, или еще что? Времени в обрез

НУ?
  • 0

#180
ekoekoeko

ekoekoeko
  • Гость
  • 45 сообщений
для Sherlock:
Не уверен на счет логарифмов я не математик :confused: ! В остальном совершенно не сложная задачка...ушло 7 минут на ее решение
Изображение
Забыл добавить-остальные вопросы хорошо гугляться, читайте и изучайте. Удачи ;)

Сообщение отредактировал ekoekoeko: 31.10.2011, 19:20:41

  • 0


Количество пользователей, читающих эту тему: 4

пользователей: 0, неизвестных прохожих: 4, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.