Gopal Rakhal Ответов: 6

как импортировать листы excel в asp.net


всем привет,
Когда я пытаюсь загрузить лист excel на asp.net gridview, мое кодирование работает в IE,но не работает в Chrome и mozilla, его дают ниже ошибки, почему так? извините, конечно...

"Компонент Microsoft Office Access database engine не может открыть или записать файл". Он уже открыт исключительно другим пользователем, или вам нужно разрешение на просмотр и запись его данных."

AmitGajjar

можете ли вы опубликовать свой код для чтения загруженного файла ?

Gopal Rakhal

//sqlconnection
string StrCon = ConfigurationManager.Соединительные нити ["идол"].Метод toString();
SqlConnection objcon = new SqlConnection(StrCon);
objcon.Открыть();
//oledbconnection
string filepath = FileUpload1. PostedFile.имя файла;
строка файла = путь.GetFileName(FileUpload1.PostedFile.имя файла);
расширение строки = путь.GetExtension(FileUpload1.PostedFile.имя файла);
строковом параметре folderpath = диспетчер конфигураций.Параметр Appsettings["Параметре Folderpath"];
string FilePath = сервер.MapPath(FolderPath + FileName);
строки stroledbCon = "поставщика=Майкрософт.Туз.Oledb для.12.0;Источник данных=" + путь + ";дополнительные свойства=значение Excel 12.0 ";
// "Поставщик=Майкрософт.Джет.Oledb для.4.0;Источник данных=" + путь + ";дополнительные свойства=\в"Excel 8.0;HDR съемка=да;компания IMEX=2\"";


OleDbConnection oledbCon = новый OleDbConnection(stroledbCon);
oledbCon.Открыть();
string strOledbQuery = " select * from [Sheet1$]";
OleDbCommand cmd = new OleDbCommand(strOledbQuery, oledbCon);
OleDbDataReader dr = cmd.Метода executereader();
в то время как (dr. Read())
{
string strinsert = " вставить в student_tbl(slNo,Rollno,Name) значения ('"+dr[0].ToString ()+"', '" + dr[1].ToString ()+"', '" + dr[2].Метод toString() + "')";
SqlCommand cmd2 = new SqlCommand(strinsert, objcon);
cmd2.Метод executenonquery();
}

AmitGajjar

Используйте ссылку улучшить вопрос, чтобы обновить свой вопрос. это не читается.

[no name]

Предложить что именно? Сообщение об ошибке совершенно ясно.

6 Ответов

Рейтинг:
52

santosh_k

Элементы управления и свойства:

1. Управление Загрузкой Файлов. имя= " FileUpload1″

2. Кнопки. name= "btnUpload" Text= " загрузить”

3. GridView: name= " GridView1″


пространство имен:

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;


исходный код:
<form id="form1"  runat="server">
 <div>
 <asp:fileupload id="FileUpload1" runat="server" forecolor="#993399" xmlns:asp="#unknown" />
       <asp:button id="btnUpload" runat="server" text="Upload" onclick="btnUpload_Click" xmlns:asp="#unknown" />
       <asp:gridview id="GridView1" runat="server" xmlns:asp="#unknown">
          OnPageIndexChanging="PageIndexChanging" BackColor="White" BorderColor="#999999"
          BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical">
          <headerstyle cssclass="hdr" backcolor="#000084" font-bold="True">
             ForeColor="White" />
          <alternatingrowstyle backcolor="#DCDCDC" />
          <footerstyle cssclass="ftr" backcolor="#CCCCCC" forecolor="Black" />
          <pagerstyle backcolor="#999999" forecolor="Black" horizontalalign="Center" />
          <rowstyle backcolor="#EEEEEE" forecolor="Black" />
          <selectedrowstyle backcolor="#008A8C" font-bold="True" forecolor="White" />
          <sortedascendingcellstyle backcolor="#F1F1F1" />
          <sortedascendingheaderstyle backcolor="#0000A9" />
          <sorteddescendingcellstyle backcolor="#CAC9C9" />
          <sorteddescendingheaderstyle backcolor="#000065" />
       </headerstyle></asp:gridview>
 </div>
</form>

aspx-файл.CS коде страницы :

1. загрузка файла Excel:
protected void btnUpload_Click(object sender, EventArgs e)
 {
        if (FileUpload1.HasFile)
 {
            string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
            string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
            string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
            string FilePath = Server.MapPath(FolderPath + FileName);
            FileUpload1.SaveAs(FilePath);
            Import_To_Grid(FilePath, Extension);
        }
    }

2. Импорт Excel файла в элемент управления GridView:защищенный пустота в(объект отправителя, EventArgs в электронной)
private void Import_To_Grid(string FilePath, string Extension)
 {
        string conStr = "";
        switch (Extension)
 {
            case ".xls": //Excel 97-03
                conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                break;
            case ".xlsx": //Excel 07
                conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                break;
        }
        conStr = String.Format(conStr, FilePath, 1);
        OleDbConnection connExcel = new OleDbConnection(conStr);
        OleDbCommand cmdExcel = new OleDbCommand();
        OleDbDataAdapter oda = new OleDbDataAdapter();
        DataTable dt = new DataTable();
        cmdExcel.Connection = connExcel;
        connExcel.Open();
        DataTable dtExcelSchema;
        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
        connExcel.Close();

        //Read Data from First Sheet
        connExcel.Open();
        cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
        oda.SelectCommand = cmdExcel;
        oda.Fill(dt);
        connExcel.Close();
        GridView1.DataSource = dt;
 GridView1.DataBind();

    }

protected void PageIndexChanging(object sender, GridViewPageEventArgs e)
 {
        string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
        string FileName = GridView1.Caption;
        string Extension = Path.GetExtension(FileName);
        string FilePath = Server.MapPath(FolderPath + FileName);
        Import_To_Grid(FilePath, Extension);
 GridView1.PageIndex = e.NewPageIndex;
 GridView1.DataBind();
    }


santosh_k

Пройдите через этот код, он поможет вам решить Ваш вопрос..:)

AmitGajjar

не забудьте добавить предварительный тег для кода.

santosh_k

ладно, конечно...спасибо

Gopal Rakhal

спасибо.....

Kuthuparakkal

хороший ответ 5+..

santosh_k

спасибо :)..

Member 12487609

когда я использую pagging The grideview, я вижу ошибку "нет строки в позиции 0". в строке " string SheetName = dtExcelSchema.Строки[0] ["TABLE_NAME"].Метод toString();"

Patrice T

Это не открытая дискуссия.
На этом форуме вы задаете новый вопрос и получаете ответы

Рейтинг:
2

Sunil Kumar Pandab

это проблема с разрешениями, пожалуйста, дайте разрешения на чтение/запись учетной записи IUSER в этой конкретной папке и в этом файле...также убедитесь, что файл не используется каким-либо другим процессом в системе...

При использовании хостинга IIS 7 пользователю пула приложений следует предоставить разрешения безопасности.

Дайте разрешение" чтение и запись "пользователю" сетевой службы " на файл, а затем перезагрузите компьютер. Это будет прекрасно работать

Думаю, это решит вашу проблему...


Рейтинг:
2

zamanipour

Я рекомендую вам использовать готовые и протестированные пакеты с большим количеством функций вместо того, чтобы писать свой собственный код. тот, кого я могу порекомендовать, - это EPPlus с отличными функциями.
вы можете скачать его через NuGet:
https://www.nuget.org/packages/EPPlus/[^]


Maciej Los

Зачем публиковать ответ на вопрос с утвержденным ответом, опубликованным почти 4 года назад?

zamanipour

вы правы. но это было в списке быстрых ответов! может быть, из-за ответа в решении 4. Я здесь новичок и буду иметь в виду, чтобы проверить дату вопроса. спасибо, что упомянули об этом.

Maciej Los

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

Рейтинг:
1

Gopal Rakhal

это была не проблема разрешения, а проблема местоположения, и я решил ее, получив подсказку от ответа santosh_k..


Рейтинг:
0

Sandip.Nascar

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

Вот Полная статья, которая вам поможет,
http://csharpdotnetfreak.blogspot.com/2011/12/upload-and-read-excel-file-in-aspnet.html[^]

Надеюсь, это поможет
овации