Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP & Excel / 11 сообщений из 11, страница 1 из 1
19.01.2017, 12:21
    #39387529
sqlask
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
Есть приложение на asp mvc 3, которое грузит Excel файл в базу.
Почему при отладке все отлично, но при обращении извне получаю ошибку "Ссылка на объект не указывает на экземпляр объекта."
Что за ерунда?
...
Рейтинг: 0 / 0
19.01.2017, 12:23
    #39387530
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
sqlaskЕсть приложение на asp mvc 3, которое грузит Excel файл в базу.
Почему при отладке все отлично, но при обращении извне получаю ошибку "Ссылка на объект не указывает на экземпляр объекта."
Что за ерунда?

Код сюда. Раз есть сообщение об ошибке - значит и код есть.
...
Рейтинг: 0 / 0
19.01.2017, 12:29
    #39387536
sqlask
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & 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.
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.
 public static List<WoodPrice> ReadPrice(string fileLocation, string fileExtension, int idSchema)
        {
            List<WoodPrice> result = new List<WoodPrice>();

            string sheetname = "Схема " + idSchema;
            string Width, Height;
            int minWidth, maxWidth, minHeight, maxHeight;
            decimal price;

            int rowcount = 0, columncount = 0;

             Excel.Application app = null;
            
                Excel.Workbook wb = null;
                Excel.Worksheet sheet = null;

                try
                {
                    app = new Excel.Application();
                    wb = app.Workbooks.Open(fileLocation);
                    sheet = wb.Sheets[sheetname];

                    rowcount = sheet.UsedRange.Rows.Count;
                    columncount = sheet.UsedRange.Columns.Count;

                    for (int c = 2; c <= columncount; c++)
                    {
                        if (sheet.Cells[1, c].Value == null) break;

                        Width = sheet.Cells[1, c].Value.ToString();

                        if (Width.IndexOf('-') > 0
                               && int.TryParse(Width.Substring(0, Width.IndexOf('-')), out minWidth)
                               && int.TryParse(Width.Substring(Width.IndexOf('-') + 1), out maxWidth))
                        {
                            for (int r = 2; r <= rowcount; r++)
                            {
                                if (sheet.Cells[r, 1].Value == null) break;

                                Height = sheet.Cells[r, 1].Value.ToString();


                                if (Height.IndexOf('-') > 0
                                    && int.TryParse(Height.Substring(0, Height.IndexOf('-')), out minHeight)
                                    && int.TryParse(Height.Substring(Height.IndexOf('-') + 1), out maxHeight))
                                {
                                    price = sheet.Cells[r, c].Value == null ? -1 : (decimal)sheet.Cells[r, c].Value;

                                    result.Add(new WoodPrice() { idSchema = idSchema, 
                                                                minWidth = minWidth, 
                                                                maxWidth = maxWidth, 
                                                                minHeight = minHeight, 
                                                                maxHeight = maxHeight, 
                                                                price = price });

                                }
                            }

                            string buf = Width;
                            buf = buf + "";
                        }
                    }
                }
                finally
                {
                    wb.Close(null, null, null);
                    if(app != null) app.Quit();

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(app);


                    GC.Collect();
                }

                return result;
        }
...
Рейтинг: 0 / 0
19.01.2017, 12:49
    #39387552
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
И fileLocation наверное в этих двух случаях разный?
...
Рейтинг: 0 / 0
19.01.2017, 13:14
    #39387576
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
ты наверное еще не серваке офис поставил да?
...
Рейтинг: 0 / 0
19.01.2017, 13:15
    #39387579
sqlask
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
fileLocation один и тот же.
Алгоритм: берем файл по указанному юзером пути и грузим себе в Content, а уж из Content с помощью екселя читаем ячейки и формируем коллекцию.
...
Рейтинг: 0 / 0
19.01.2017, 13:17
    #39387581
sqlask
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
handmadeFromRu,
на серваке офис не ставила, поставила в Visual Studio Tools for Office кучу библиотечек, в т.ч. и ексельную. Должно б хватить.
...
Рейтинг: 0 / 0
19.01.2017, 13:18
    #39387583
sqlask
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
хм... а ведь реально может офиса не хватает? Сейчас поэкперементируем ...
...
Рейтинг: 0 / 0
19.01.2017, 13:20
    #39387584
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
sqlask,

не надо так делать) кароче мс не гарантирует работу асп и офиса, если ты почитаешь мсдн там эт черно по белому написано. используй сторонние вещи для этого к примеру https://www.nuget.org/packages/EPPlus/
...
Рейтинг: 0 / 0
19.01.2017, 14:58
    #39387696
sqlask
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
)) спасибо, попробуем.
...
Рейтинг: 0 / 0
20.01.2017, 17:23
    #39388610
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP & Excel
Для XLS я брал https://npoi.codeplex.com/.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP & Excel / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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