我在ASP.NET工作,我想将Excel工作表导入SQL Server中的表。 问题是我的Excel的一列有一个百分比类型(例如:25%)。您是否有解决方案在SQL Server的表中存储此百分比值?
如果你愿意,我发布我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string path = string.Concat((Server.MapPath("~/temp/" + FileUpload1.FileName)));
FileUpload1.PostedFile.SaveAs(path);
OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");
// Feuil1 est la première page du fichier Excel
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Feuil1$]", OleDbcon);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);
OleDbcon.Open();
DbDataReader dr = cmd.ExecuteReader();
// configuration de la chaîne de connexion de SQL Server
string con_str = @"Data Source=.;Initial Catalog=projetDGCS;Integrated Security=True";
// On copie dans SQL Server
SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str);
// On mets le nom de la table de destination
bulkInsert.DestinationTableName = "reponse";
bulkInsert.WriteToServer(dr);
OleDbcon.Close();
// On a stocké le fichier Excel dans le dossier "temp" et on le supprime après
Array.ForEach(Directory.GetFiles((Server.MapPath("~/temp/"))), File.Delete);
Label1.ForeColor = Color.Green;
Label1.Text = "Insertion réussie !";
}
答案 0 :(得分:2)
Excel没有字段的百分比类型。它具有NUMERIC字段的百分比格式 - 与您的应用程序相同。 0.01 = 1%(至少我的学校确实教过我)。
这是非常客观的 - 您可以在任何数字字段中存储百分比值。如何格式化它以及是否使用例如tinyint(1 = 1%)完全取决于你作为程序员。