【发布时间】:2016-05-13 08:32:18
【问题描述】:
net 和 C#。我需要编写一个程序来浏览和读取一个excel,然后以指定的格式解析它,最后插入到sql server数据库中。
我使用 oledb 读取 excel,并从 excel 创建了 DataTable。现在我无法以所需的格式解析它。这是关于什么是 excel 输入以及插入数据库的预期格式的图片的链接。 Input and expected output format
现在我正在处理简单的数据,将来我需要处理大约 3000 列的大型 Excel 数据,以解析成大约 250000 条记录。还请在性能方面给我建议。现在我正在使用 oledb 是不是很好还是我需要使用其他任何东西。
这是我的示例代码 c# 代码文件
OleDbConnection Econ;
SqlConnection con;
string constr, Query, sqlconn;
protected void Page_Load(object sender, EventArgs e)
{
}
// excel connection
private void ExcelConn(string FilePath)
{
constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", FilePath);
Econ = new OleDbConnection(constr);
}
// sql connection
private void connection()
{
sqlconn = ConfigurationManager.ConnectionStrings["SqlCom"].ConnectionString;
con = new SqlConnection(sqlconn);
}
// read data from excel and creating a datatable
private void ExcelToDataTable(string FilePath)
{
ExcelConn("C:\\Users\\username\\Desktop\\EmpEx.xlsx");
Query = string.Format("Select * FROM [Sheet1$]");
OleDbCommand Ecom = new OleDbCommand(Query, Econ);
Econ.Open();
OleDbDataAdapter oda = new OleDbDataAdapter(Ecom);
DataTable dtExcel = new DataTable();
Econ.Close();
oda.Fill(dtExcel);
// DataTable parseTable = ParseDataTable(dtExcel);
//connection();
// printing data table
foreach (DataRow dataRow in dtExcel.Rows)
{
foreach (var item in dataRow.ItemArray)
{
Response.Write(item);
}
}
Response.Write("<br> Colums: " + dtExcel.Columns.Count.ToString() + "<br>");
Response.Write("Rows: " + dtExcel.Rows.Count.ToString() + "<br>");
//print on screen
foreach(DataRow row in dtExcel.Rows)
{
foreach(DataColumn col in dtExcel.Columns)
{
Label1.Text = Label1.Text + row[col].ToString() + "\t";
}
}
}
// Method to make data table in specified format
public DataTable ParseDataTable(DataTable dtExcel)
{
var dt = new DataTable("sourceData");
dt.Columns.Add(new DataColumn("id", typeof(String)));
dt.Columns.Add(new DataColumn("name", typeof(String)));
dt.Columns.Add(new DataColumn("variable", typeof(String)));
dt.Columns.Add(new DataColumn("year", typeof(String)));
dt.Columns.Add(new DataColumn("value", typeof(String)));
// NOT GETTING TO PARSE In specified format
/**** NEED HELP HERE *****/
return dt;
}
protected void Button1_Click(object sender, EventArgs e)
{
string CurrentFilePath = Path.GetFullPath(FileUpload1.PostedFile.FileName);
ExcelToDataTable(CurrentFilePath);
}
请帮助我如何实现这一目标。如链接(屏幕截图)中的附图中所述,如何解析指定格式的输入 excel 数据。请建议我解决我的问题的任何方法。
【问题讨论】:
标签: c# asp.net excel ado.net oledb