【发布时间】:2016-05-24 06:38:56
【问题描述】:
string b = "xa";
if (sa.HasFile)//Kullanıcı fileupload ile bir dosya seçmiş ise işlemleri gerçekleştir.
{
if (sa.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" || sa.PostedFile.ContentType == "application/vnd.ms-excel") //Sadece jpeg dosyalarını yüklenmesine izin veriyoruz.
{
if (sa.PostedFile.ContentLength < 1024000000) //Maksimum 1MB'lık dosyaların yüklenmesine izin veriyoruz.
{
string isim = Guid.NewGuid().ToString();
//Benzersiz bir isim oluşturduk.İsimlendirme için farklı yöntemlerde kullanabilirsiniz.
sa.SaveAs(Server.MapPath("~/App_Data/") + /*Session["kurumkodu"].ToString()*/ b + ".xlsx");
//Sunucuda ki resimler klasörünün içerisine seçilen resmi oluşturduğumuz benzersiz isim ile kaydediyoruz.
Label1.Text = "Dosya yüklendi";
//Detaylı bir bilgi mesajı verdik.
string a = "xa";
string Access = Server.MapPath("/App_Data/yeni.mdb");
string Excel = Server.MapPath("~/App_Data/") + a/*Session["kurumkodu"].ToString()*/ + ".xlsx"; ;
string connect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Excel + ";Extended Properties=Excel 12.0;HDR=NO";
using (OleDbConnection conn = new OleDbConnection(connect))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO [MS Access;Database=" + Access + "].[Tablo1] SELECT * FROM [DATA$]";
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
cmd.ExecuteNonQuery();
if (conn.State == ConnectionState.Open)
{
conn.Dispose();
conn.Close();
}
cmd.Dispose();
Response.Redirect("yonlendir.aspx");
}
catch (Exception)
{
if (conn.State == ConnectionState.Open)
{
conn.Dispose();
conn.Close();
}
我上面的代码。我想让列名不能容忍excel来访问系统。这段代码有这样的错误:
列名不匹配。
没有列名怎么办?
【问题讨论】:
-
如果插入所有数据,可以不加列名。
-
怎么做?如何更改插入代码?
-
您在表 [Data] 中的列是否等于 [Tablo1] 的列?
-
是的。但是我想试试这个。如果我改变一个列名,这个代码就会成功
-
这意味着如果你的 SQL 是 select * ,它会出错。但是如果选择fieldsName,会成功吗?如果属实,我认为是顺序问题。
标签: c# asp.net excel ms-access