Das Microsoft Office Access-Datenbankmoduls kann nicht geöffnet werden oder in die Datei schreiben "
Daten eingelesen werden .net gridview aus excel-Arbeitsblatt.
Hier sind die aspx-und aspx.cs-codes.
ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Read and Display Data From an Excel File (.xsl or .xlsx) in ASP.NET</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<b>Please Select Excel File: </b>
<asp:FileUpload ID="fileuploadExcel" runat="server" />
<asp:Button ID="btnImport" runat="server" Text="Import Data" OnClick="btnImport_Click" />
<br />
<asp:Label ID="lblMessage" runat="server" Visible="False" Font-Bold="True" ForeColor="#009933"></asp:Label><br />
<asp:GridView ID="grvExcelData" runat="server">
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
</asp:GridView>
</div>
</form>
</body>
</html>
ASPX.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnImport_Click(object sender, EventArgs e)
{
string connString = "";
string strFileType = Path.GetExtension(fileuploadExcel.FileName).ToLower();
string path = fileuploadExcel.PostedFile.FileName;
//Connection String to Excel Workbook
if (strFileType.Trim() == ".xls")
{
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
}
else if (strFileType.Trim() == ".xlsx")
{
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path +";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMEX=2;\"";
}
string query = "SELECT [UserName],[Education],[Location] FROM [Sheet1$]";
OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
OleDbCommand cmd = new OleDbCommand(query, conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
grvExcelData.DataSource = ds.Tables[0];
grvExcelData.DataBind();
da.Dispose();
conn.Close();
conn.Dispose();
}
conn.Open(); gibt die folgende Fehlermeldung:
Die Microsoft Office Access-Datenbankmodul kann nicht öffnen oder schreiben der Datei ". Es ist bereits exklusiv geöffnet, die von einem anderen Benutzer, oder Sie
benötigen die Berechtigung zum anzeigen und schreiben von Daten.
Netzwerk-service wurde zur Verfügung gestellt, der alle Berechtigungen für den Ordner, in dem excel-Blatt gespeichert ist.
Dies bedeutet, dass die Datei noch nicht fertig hochgeladen hast, oder zumindest der server nicht freigegeben hat es noch nicht. Die
Es hilft nicht viel. Können Sie mir sagen, was ich tun muss, damit es läuft ?
Click
Ereignis, und der upload geschieht in Reaktion auf die gleiche POST
Anfrage aus dem browserEs hilft nicht viel. Können Sie mir sagen, was ich tun muss, damit es läuft ?
InformationsquelleAutor Krithi07 | 2015-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern Sie die hochgeladene Datei an einen Speicherort mit FileUpload.SaveAs, bevor Sie versuchen, Sie zu verarbeiten. Als die docs warnen,
Dateien sind Cache im Arbeitsspeicher oder in einem temporären Ordner auf der Festplatte, bis Sie Sie speichern.
Sollten Sie vielleicht überlegen, eine andere Methode der Verarbeitung von Excel-Dateien, wie EPPlus (xlsx), NPOI (xls und xlsx) oder einfach nur das Open XML-SDK (xlsx). Sie brauchen nicht die Jet-Treiber, haben weniger Macken und einige der Lesen kann, einen stream direkt.
Dies würde ermöglichen es Ihnen, Lesen Sie die hochgeladenen Inhalte direkt aus der hochgeladenen Datei
InputStream
Eigenschaft. Mit Open XML SDK zum Beispiel können Sie schreiben:InformationsquelleAutor Panagiotis Kanavos