Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: FileUpload - открытие Excel (с кодом) Добавлено: 18.05.10 13:13  

Автор вопроса:  Alba
На форме есть FileUpload и Button. Выбираю файл Excel и при нажатии на кнопку он должен открыться. Не получается. Открывается сам лист Excel и выдается ошибка.

Ответить

  Ответы Всего ответов: 23  

Номер ответа: 1
Автор ответа:
 Alba



Вопросов: 8
Ответов: 37
 Профиль | | #1 Добавлено: 18.05.10 13:15
  1.  
  2.  
  3. Protected Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
  4.         
  5.         'Открыть файл
  6.  
  7.               Dim excel_app As New Excel.Application
  8.                excel_app.Visible = True
  9.         'Dim fileOK As Boolean = False
  10.         Dim FileName As Boolean = True
  11.        
  12.         If IsPostBack = True And FileUpload2.HasFile = True Then
  13.  
  14.             Dim fileExtension As String
  15.             fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower()
  16.             
  17.     ***        excel_app.Workbooks.Open(FileUpload2.FileName)
  18.                               
  19.         End If


В предпоследней строке(***) выдается ошибка след.вида:
"Не удалось найти "SHABLON.xls". Проверьте правильность ввода имени и расположения файла.
При попытке открытия файла из списка недавно использованных файлов убедитесь, что файл не был переименован, перемещен или удален."

Может можете что-то подсказать?

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 18.05.10 15:22
Может, надо еще и путь указать, а не только имя файла?

Ответить

Номер ответа: 3
Автор ответа:
 Alba



Вопросов: 8
Ответов: 37
 Профиль | | #3 Добавлено: 18.05.10 15:52
Нет, путь в коде указывать не надо, иначе зачем мне FileUpload...Я хочу выбирать нужный файл через него...

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 18.05.10 17:25
Нет, путь в коде указывать не надо, иначе зачем мне FileUpload...Я хочу выбирать нужный файл через него...

А ты наивно полагаешь, что винда тебе позволит получить доступ к локальной машине клиента? FileUpload - это серверный элемент, и он работает совсем не так как OpenFileDialog, и вовсе не предназначен для выбора пути к файлу.. Раз ты не понимаешь разницу между этими элементами, и вообще клиент-серверной моделью, то тебе следует сначала почитать теории..

Ответить

Номер ответа: 5
Автор ответа:
 Alba



Вопросов: 8
Ответов: 37
 Профиль | | #5 Добавлено: 18.05.10 17:56
А не подскажете какой тогда элемент следует использовать в таком случае, если при созданиии WebApplication на панели toolbox нет элемента OpenFileDialog? или похожего...

Ответить

Номер ответа: 6
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 18.05.10 19:11
А не подскажете какой тогда элемент следует использовать в таком случае

прежде, чем что то объяснять, я хотел бы сказать... если вы планируете разместить ваше приложение в сети интернет, то ни один хостер не позволит вам установить Excel на сервере.. Т.е. если у вас нету своего сервера, то вы не сможете использовать этот код...

Ответить

Номер ответа: 7
Автор ответа:
 Alba



Вопросов: 8
Ответов: 37
 Профиль | | #7 Добавлено: 18.05.10 19:18
Нет, я не буду его размещать в инете. Мне просто нужно чтобы выбранный (указанный не в коде) файл (Excel) открывался через приложение.

Ответить

Номер ответа: 8
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #8
Добавлено: 18.05.10 20:26
Я говорил о том, что у твоего FileUpload1 возможно есть свойство Path или FilePath

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 18.05.10 20:39
Есть, но оно для других целей.. из соображение безопасности ASP.NET не позволит таким образом открыть файл..

Ответить

Номер ответа: 10
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #10 Добавлено: 18.05.10 20:47
В таком случае вы должны внимательно ознакомиться с этим докуметом
http://msdn.microsoft.com/ru-ru/library/ms227677(VS.90).aspx
Во-вторых, вы должны понимать что этот элемент управления не даст вам полный локальный путь к файлу, а только имя файла и расширение. В описании сказано:
Также элемент управления FileUpload и объект HttpPostedFile поддерживают метод SaveAs для записи файла на диск.

Это значит, что вам надо через этот элемент управления как бы загрузить этот файл на сервер и сохранить его, после чего у вас на руках будет абсолютный путь к файлу. И вот уже этот путь вы сможете подсунуть книге Excel для открытия. Но тут есть некоторые тонкости.. внимательно прочтите это:
Однако для сохранения файла процесс ASP.NET должен обладать разрешением на создание файлов в указанном местоположении. Кроме того, приложение может быть настроено таким образом, чтобы для сохранения файла требовался абсолютный, а не относительный путь, что является мерой обеспечения безопасности. Если для атрибута requireRootedSaveAsPath элемента конфигурации httpRuntime установлено значение true (которое является значением по умолчанию), необходимо указать абсолютный путь при сохранении переданного файла.

Примечание.
Можно создать абсолютный путь на основании корня приложения с помощью метода MapPath класса HttpServerUtility и путем передачи в метод оператора тильда (~), который представляет корневую папку приложения.
 


Кроме того, вот тут есть пример который подойдет для ваших целей.
http://msdn.microsoft.com/ru-ru/library/ms227669(v=VS.90).aspx

Ответить

Номер ответа: 11
Автор ответа:
 Alba



Вопросов: 8
Ответов: 37
 Профиль | | #11 Добавлено: 18.05.10 20:51
Спасибо. Этот пример я уже испытала.

Ответить

Номер ответа: 12
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #12 Добавлено: 18.05.10 20:52
И еще вопрос: Чем обусловлен ваш выбор в пользу WebApplication? Почему не WinForms? Тогда бы проблем было в 10 раз меньше...

Ответить

Номер ответа: 13
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #13 Добавлено: 18.05.10 20:55
Спасибо. Этот пример я уже испытала.

Раз испытали, то path & FileUpload1.FileName это и есть ваш абсолютный путь к этому файлу и именно его вы должны подсунуть в метод Workbooks.Open

Ответить

Номер ответа: 14
Автор ответа:
 Alba



Вопросов: 8
Ответов: 37
 Профиль | | #14 Добавлено: 18.05.10 21:07
Так у меня подчеркивается Path - "Path is a type and cannot be used as an exspression".
 
  1. Dim excel_app As New Excel.Application
  2.         excel_app.Visible = True
  3.         Dim FileName As Boolean = True
  4.         If IsPostBack = True And FileUpload2.HasFile = True Then
  5.  
  6.             Dim fileExtension As String
  7.             fileExtension = System.IO.Path.GetExtension(FileUpload2.FileName).ToLower()
  8.             excel_app.Workbooks.Open(Path & FileUpload2.FileName)
  9.         End If
  10.  

Ответить

Номер ответа: 15
Автор ответа:
 Alba



Вопросов: 8
Ответов: 37
 Профиль | | #15 Добавлено: 18.05.10 21:09
И еще вопрос: Чем обусловлен ваш выбор в пользу WebApplication? Почему не WinForms? Тогда бы проблем было в 10 раз меньше...



Отвечаю: небыло рядом более или менее умных людей, которые наставили бы меня на путь...вот и выбрала что поновей...вот и сижу мучаюсь...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам