Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / манипуляция Excel файлом в ASP.Net / 21 сообщений из 21, страница 1 из 1
10.08.2012, 13:22
    #37912167
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
Есть ASP.Net приложение, которое грузит в папку несколько Excel файлов от разных кастомеров.
Эти файлы могут прийти в любой версии Excel, но проблема сейчас не в этом.

Задача такова:
Из приложения ASP.Net
1. открыть по очереди все Excel файлы
2. в каждом Excel файле программно создать макрос
3. выполнить, созданный в п.2, макрос
4. удалить, созданный в п.2, макрос из файла
5. сохранить Excel файл в другой каталог.

Итак начал реализацию задуманного.
вот код

Код: 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.
        protected void Excel_RunMacros()
        {
            Excel.Application oExcel;
            Excel.Workbook oBook;
            VBIDE1.VBComponent oModule;
            Office.CommandBar oCommandBar;
            Office.CommandBarButton oCommandBarButton;
            String sCode;
            Object oMissing = System.Reflection.Missing.Value;


            // Create an instance of Excel.
            oExcel = new Excel.Application();

            // Add a workbook.
            //oBook = oExcel.Workbooks.Add(oMissing);

            // Open a workbook.
            oBook = oExcel.Workbooks.Open(m_filePath); // m_filePath - тут путь к файлу

            
            // Create a new VBA code module.
            oModule = oBook.VBProject.VBComponents.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule);

// а вот тут ошибочка вылетает:
// Programmatic access to Visual Basic Project is not trusted
// можно ли как-то программно вообще вырубить все секьюрити для манипуляций с ексел-файлом???



Все что написано тут http://support.microsoft.com/kb/282830
выполнено макросы разрешены и секьюрит стоит в Low уже давно
...
Рейтинг: 0 / 0
10.08.2012, 13:28
    #37912174
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
...
Рейтинг: 0 / 0
10.08.2012, 14:12
    #37912247
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
? http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757
там какие-то общие фразы...
я руководствовался этим http://support.microsoft.com/kb/303872/ru
...
Рейтинг: 0 / 0
10.08.2012, 14:27
    #37912274
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
[quot RegisteredUser
Задача такова:
Из приложения ASP.Net
1. открыть по очереди все Excel файлы
2. в каждом Excel файле программно создать макрос
3. выполнить, созданный в п.2, макрос
4. удалить, созданный в п.2, макрос из файла
5. сохранить Excel файл в другой каталог.[/quot]

Меня пугают люди, которые ставят подобные "задачи".
...
Рейтинг: 0 / 0
10.08.2012, 14:33
    #37912287
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
надо делать отдельный сервис, которому можно было бы назначить соответствующие права
...
Рейтинг: 0 / 0
10.08.2012, 15:49
    #37912428
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
МСУ
Меня пугают люди, которые ставят подобные "задачи".
на лабу похоже:)
...
Рейтинг: 0 / 0
10.08.2012, 17:58
    #37912643
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
в проект в Reference затянуто: Microsoft Excel 11.0 Object Library


итак код:
Код: 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.
        protected void bt_Excel_Click(object sender, EventArgs e)
        {
            // Create an instance of Microsoft Excel, make it visible,
            // and open Book1.xls.
            VBIDE.VBComponent module = null;
            Object oMissing = System.Reflection.Missing.Value;

            String m_filePath = @"C:\Users\vakhmet\Desktop\SRSR 2012\rpt_Prm1Gap.xls";
            string sMacro = @"";

            // Create an instance of Microsoft Excel

            Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
            oExcel.Visible = true;
            Microsoft.Office.Interop.Excel.Workbooks oBooks = oExcel.Workbooks;
            Microsoft.Office.Interop.Excel._Workbook oBook = null;
            oBook = oBooks.Open(m_filePath, oMissing, oMissing,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);

            module = oBook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule) // в этой строке компилятор ругается следующим образом (синей пунктирной линией подчеркнуто module и VBComponents):

//Error	1	The type 'Microsoft.Vbe.Interop.VBProject' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Vbe.Interop, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.	D:\Projects\TestProjects\asp_ExcelRoutine\asp_ExcelRoutine\Default.aspx.cs	

//Error	2	'Microsoft.Vbe.Interop.VBProject' does not contain a definition for 'VBComponents' and no extension method 'VBComponents' accepting a first argument of type 'Microsoft.Vbe.Interop.VBProject' could be found (are you missing a using directive or an assembly reference?)	D:\Projects\TestProjects\asp_ExcelRoutine\asp_ExcelRoutine\Default.aspx.cs


;
...
Рейтинг: 0 / 0
10.08.2012, 18:15
    #37912673
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
МСУRegisteredUserЗадача такова:
Из приложения ASP.Net
1. открыть по очереди все Excel файлы
2. в каждом Excel файле программно создать макрос
3. выполнить, созданный в п.2, макрос
4. удалить, созданный в п.2, макрос из файла
5. сохранить Excel файл в другой каталог.

Меня пугают люди, которые ставят подобные "задачи".А меня — которые на них подписываются. Причем владеющие языком на уровне незнания, как объявляются переменные:RegisteredUserсиней пунктирной линией подчеркнуто module
...
Рейтинг: 0 / 0
10.08.2012, 18:23
    #37912678
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
а можно по сути проблемы что-то написать?

я обязательно расскажу заказчику, что его задачи были раскритикованы в пипец,
но к сожалению у них вот такие вот нетривиальные задачи.
...
Рейтинг: 0 / 0
10.08.2012, 18:53
    #37912711
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
Суть первой проблемы в незнании основ языка (не объявлена переменная). Суть второй — в неумении пользоваться ide (не подключена/не импортирована сборка Microsoft.VBE.Interop). Самая большая проблема — в неумении читать сообщения об ошибках (не читана литература "для чайников").
А вообще проблем нет.
...
Рейтинг: 0 / 0
10.08.2012, 19:00
    #37912719
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
AntonariyСуть первой проблемы в незнании основ языка (не объявлена переменная).
о какой переменной идет речь?
...
Рейтинг: 0 / 0
10.08.2012, 19:26
    #37912753
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
AntonariyСуть первой проблемы в незнании основ языка (не объявлена переменная). Суть второй — в неумении пользоваться ide (не подключена/не импортирована сборка Microsoft.VBE.Interop). Самая большая проблема — в неумении читать сообщения об ошибках (не читана литература "для чайников").
А вообще проблем нет.

ничего в проекте не менял, кроме строки, где ошибка (см. скриншот)
...
Рейтинг: 0 / 0
10.08.2012, 19:38
    #37912762
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
В настройках безопасности экселя запрещена манипуляция VBA-проектами. Нужно разрешить.
...
Рейтинг: 0 / 0
10.08.2012, 20:44
    #37912815
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
RegisteredUser? http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757
там какие-то общие фразы...
Там не общие фразы, там написано Microsoft в настоящее время не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого неинтерактивного приложения-клиента или компонента (включая ASP, ASP.NET, DCOM и NT Services), потому что Офис обладает неустойчивым поведением, когда работает в такой среде. вобщем, Excel из ASP.NET запускать ВООБЩЕ НЕЛБЗЯ. И лучше понять это сразу, чем сделать, чтобы оно как-то работало. Потому что пипец будет, когда выяснится, что то что работает у вас, не работает у заказчика.
...
Рейтинг: 0 / 0
13.08.2012, 10:48
    #37914058
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
?RegisteredUserпропущено...

там какие-то общие фразы...
Там не общие фразы, там написано Microsoft в настоящее время не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого неинтерактивного приложения-клиента или компонента (включая ASP, ASP.NET, DCOM и NT Services), потому что Офис обладает неустойчивым поведением, когда работает в такой среде. вобщем, Excel из ASP.NET запускать ВООБЩЕ НЕЛБЗЯ. И лучше понять это сразу, чем сделать, чтобы оно как-то работало. Потому что пипец будет, когда выяснится, что то что работает у вас, не работает у заказчика.

спасибо Microsoft за наше счастливое детство!
НО на выходных уже найден способ, как обойти эту шнягу.
всем спасибо.
как заработает - выложу код (может кому-то надо будет)
...
Рейтинг: 0 / 0
13.08.2012, 12:19
    #37914270
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
RegisteredUser, ну по-видимому вы знаете о продуктах Microsoft больше, чем сама Microsoft. Хотя, скорее, при сдаче проекта заказчику вы будете кричать "у меня же все работало" и биться головой об стену.
...
Рейтинг: 0 / 0
14.08.2012, 12:07
    #37915653
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
?RegisteredUser, ну по-видимому вы знаете о продуктах Microsoft больше, чем сама Microsoft. Хотя, скорее, при сдаче проекта заказчику вы будете кричать "у меня же все работало" и биться головой об стену.
нет не буду!
заказчик изначально уведомлен, что это будет подпрыг с извращением.
он сказал - делайте!
нам пофиг - он сказал - мы делаем!
...
Рейтинг: 0 / 0
14.08.2012, 14:32
    #37915935
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
RegisteredUser, ну если вы тестируете имено на том компьютере, на котором оно и будет работать, и уверены, что на него никогда не будут устанавливаться обновления windows и офиса, что же, такой подход имеет право на существование.
...
Рейтинг: 0 / 0
15.08.2012, 17:12
    #37918140
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
?RegisteredUser, ну если вы тестируете имено на том компьютере, на котором оно и будет работать, и уверены, что на него никогда не будут устанавливаться обновления windows и офиса, что же, такой подход имеет право на существование.

именно на том и тестируем.
...
Рейтинг: 0 / 0
20.08.2012, 15:19
    #37923131
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
Итак, как и обещал, работающий пример.
В пример собраны все отдельные вопросы, которые я задавал тут:
ASP.Net и Report Services 2012
SRSR 2008 как подставить параметры в URL

Данный пример работает для RS2012.
Если нужена работа с другим RS придется с помощью Fiddler подставить URL, поскольку он сильно отличается от версии к версии RS.
Код, конечно, можно написать и по другому, но нам пока так подходит.
В общем пользуйтесь.
Код прилеплен к теме.
...
Рейтинг: 0 / 0
20.08.2012, 15:26
    #37923141
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
манипуляция Excel файлом в ASP.Net
RegisteredUser, правильно сделал. Молодец.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / манипуляция Excel файлом в ASP.Net / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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