Как загрузить файл excel в ASP.NET
Я следовал этому учебнику, но, должно быть, что-то пропустил, потому что я не могу загрузить файл excel в папку моего проекта, которая действует как локальный сервер.
https://www.youtube.com/watch?v=fP6RLBWf894
Пожалуйста, дайте мне знать, что я могу сделать, чтобы исправить эту проблему.
Я не получаю никаких ошибок, но файл не будет отображаться в сетке, и он не загружается в папку.
Мне также нужно иметь возможность выбирать среди всех листов в рабочей книге, а не просто открывать первый лист.
Спасибо.
Что я уже пробовал:
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.OleDb; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.OleDb; using System.Configuration; using System.IO; using System.Data; namespace Interfaz { public partial class _Default : Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string filePath = ConfigurationManager.AppSettings["FilePath"].ToString(); string filename = string.Empty; if (FileUpload1.HasFile) { try { string[] allowFile = {".xls",".xlsx" }; string FileExt = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName); bool isValidFile = allowFile.Contains(FileExt); if (!isValidFile) { lblMsg.ForeColor = System.Drawing.Color.Red; lblMsg.Text = "Porfavor solo suba archivos de Excel"; } else { //Upload only less or equal to 1 mb /*int FileSize = FileUpload1.PostedFile.ContentLength; if (FileSize<=1048576) { }*/ filename = Path.GetFileName(Server.MapPath(FileUpload1.FileName)); FileUpload1.SaveAs(Server.MapPath(filePath) + filename); OleDbConnection con = null; if (FileExt==".xls") { grid.Visible = true; con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filePath+";Extended Properties=Excel 8.0;"); } if (FileExt == ".xlsx") { grid.Visible = true; con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=Excel 12.0;"); } con.Open(); DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null); String[] sheetNames = new String[dt.Rows.Count]; /*int i = 0; foreach (DataRow row in dt.Rows) { cb.Items.Add(row["TABLE_NAME"].ToString()); i++; }*/ OleDbCommand ExcelCommand = new OleDbCommand(@"SELECT * FROM ["+sheetNames+@"]",con); OleDbDataAdapter ExcelAdapter = new OleDbDataAdapter(ExcelCommand); DataSet ExcelDataSet = new DataSet(); con.Close(); grid.DataSource = ExcelDataSet; grid.DataBind(); } } catch (Exception ex) { } } } } }
CHill60
"Пожалуйста, дайте мне знать, что я могу сделать, чтобы исправить эту проблему." ... научитесь отлаживать
Karthik_Mahalingam
вы получаете какую-нибудь ошибку ?
добавьте приведенный ниже код
catch (Exception ex) { throw ex; }
F-ES Sitecore
У нас нет доступа к html-разметке, файлу, который вы используете для загрузки, или конфигурации. Код выглядит нормально, но он зависит от многих вещей, к которым у нас нет доступа. Как и выше, научитесь отлаживать свой код. Шагните через него, чтобы увидеть, что происходит строка за строкой, и избавиться от блока catch. Если код выдает ошибку, вы не будете знать, что это такое.
Sinisa Hajnal
1. Поместите что - то в блок catch-так, как вы это сделали, вы просто проглатываете исключение, и именно поэтому вы не получаете ошибку. Было бы лучше не иметь try catch, чем иметь пустой блок catch
2. окончательно используйте и утилизируйте любые соединения, транзакции и другие расходные материалы.
3. научитесь использовать точки останова и отладку
Laxmidhar tatwa technologies
Сначала сохраните файл на сервере с помощью server.mappath
во-вторых, проверьте, является ли водитель зарегистрированы или не oldb