using System.Configuration;
右键项目选择添加引用,然后点“.NET”,找到System.Configuration,添加即可。
#region 导入按钮
protected void UploadCSV_Click(object sender, EventArgs e)
{
if (!CheckFile()) //检查导入的文件格式是否正确
{
lblMesage.Text = Mes;
return;
}
DataTable dt = OpenCSV(); //将要导入的CSV文件的数据读取到DataTable中
}
#endregion
#region 检查导入文件是否正确
/// <summary>
/// 检查导入文件是否正确
/// </summary>
/// <returns>true:文件正确 false:文件错误</returns>
private bool CheckFile()
{
string filePath = fileImport.PostedFile.FileName;
if (fileImport.PostedFile.ContentLength / 1024/1024>= 40) //上传文件大小的判断
{
Mes += "选择的文件超多了40M!";
}
// 导入文件是否存在
if (filePath.Equals(""))
{
Mes += "请选择导入文件!";
return false;
}
// 文件类型是否为csv
String fileExtension = Path.GetExtension(filePath).ToString().ToLower();
if (!fileExtension.Equals(".csv"))
{
Mes += "文件类型不对,导入文件只能是csv文件!";
return false;
}
return true;
}
#endregion
#region 读取导入的文件,将CSV文件的数据读取到DataTable中
/// <summary>
/// 将CSV文件的数据读取到DataTable中
/// </summary>
/// <param name=""></param>
/// <returns>返回读取了CSV数据的DataTable</returns>
public DataTable OpenCSV()
{
//创建目录及子目录 先将文件上传到服务器上面的某个目录下,然后在删除这个目录
string HeadDir = System.Configuration.ConfigurationManager.AppSettings["UpLoad"];
if (!Directory.Exists(HeadDir))
{
Directory.CreateDirectory(HeadDir); //创建D:/UpLoad/目录
}
//上传路径
string fileName = HeadDir + DateTime.Now.ToFileTime().ToString("f") + ".csv";
fileImport.PostedFile.SaveAs(fileName);
DataTable dt = new DataTable();
FileStream fs = new FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
try
{
//记录每次读取的一行记录
string strLine = "";
//记录每行记录中的各字段内容
string[] aryLine;
//标示列数
int columnCount = 0;
//标示是否是读取的第一行
bool IsFirst = true;
//逐行读取CSV中的数据
while ((strLine = sr.ReadLine()) != null)
{
aryLine = strLine.Split(','); //把读取到的内容分割
if (IsFirst == true)
{
IsFirst = false;
columnCount = aryLine.Length;
//创建列
for (int i = 0; i < columnCount; i++)
{
DataColumn dc = new DataColumn(aryLine[i]);
dt.Columns.Add(dc);
}
}
else
{
DataRow dr = dt.NewRow(); //创建行
for (int j = 0; j < columnCount; j++)
{
dr[j] = aryLine[j];
}
dt.Rows.Add(dr);
}
}
sr.Close();
fs.Close();
}
catch (Exception ex)
{
Mes += "文件导入失败,请检查数据格式!" + ex.ToString() + "/r/n";
}
finally
{
sr.Close();
fs.Close();
if (File.Exists(fileName))
File.Delete(fileName); //直接删除其中的文件
}
return dt;
}
#endregion
Web.config配置
<appSettings>
<!--CSV文件存放目录-->
<add key="UpLoad" value="D:/UpLoad/" />
</appSettings>
<httpRuntime maxRequestLength="49600" appRequestQueueLimit="60" executionTimeout="60" />
<customErrors mode="Off">
</customErrors>