我收到了一个由客户上传到服务器的Excel文件,所有我看到的例子都展示了如何保存并读取它。
我需要做的是从网页或FileReader接收Excel文件,并将其保存到DataTable中,其中列名保留为Excel表格的第一行。
以下代码正是我所需要的,但它没有展示如何在不先将文件保存到存储器中的情况下将其读入数据表中。
我需要保存Excel文件并处理它,以确保所有列名和每行中的数据都是正确的。处理完这些信息后,我将开始将其保存到SQL数据库的过程。
如何将Excel文件保存为流并将其保留列名保存到DataTable中呢?
**请注意,表名并不重要,我只会处理Excel簿中的第一个工作表,最重要的是每行的列名和数据类型。
代码引用自:http://www.aspsnippets.com/Articles/Read-and-Import-Excel-File-into-DataSet-or-DataTable-using-C-and-VBNet-in-ASPNet.aspx
我需要做的是从网页或FileReader接收Excel文件,并将其保存到DataTable中,其中列名保留为Excel表格的第一行。
以下代码正是我所需要的,但它没有展示如何在不先将文件保存到存储器中的情况下将其读入数据表中。
我需要保存Excel文件并处理它,以确保所有列名和每行中的数据都是正确的。处理完这些信息后,我将开始将其保存到SQL数据库的过程。
如何将Excel文件保存为流并将其保留列名保存到DataTable中呢?
**请注意,表名并不重要,我只会处理Excel簿中的第一个工作表,最重要的是每行的列名和数据类型。
代码引用自:http://www.aspsnippets.com/Articles/Read-and-Import-Excel-File-into-DataSet-or-DataTable-using-C-and-VBNet-in-ASPNet.aspx
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.IO;
using System.Configuration;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
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, rbHDR.SelectedItem.Text);
}
}
private void Import_To_Grid(string FilePath, string Extension, string isHDR)
{
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, isHDR);
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
cmdExcel.Connection = connExcel;
//Get the name of First Sheet
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();
//Bind Data to GridView
GridView1.Caption = Path.GetFileName(FilePath);
GridView1.DataSource = dt;
GridView1.DataBind();
}