将EXCEL的数据读取出来写入数据库的实例方法
2009-08-26 16:33
766 查看
[align=center]将EXCEL的数据读取出来写入数据库的实例方法
[/align]1. 将execl数据导到入DataSet中代码实现:
1 public DataSet ExcelToDS(string Path)
2 {
3 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
4 "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
5 OleDbConnection conn = new OleDbConnection(strConn);
6 conn.Open();
7 string strExcel = "";
8 OleDbDataAdapter myCommand = null;
9 DataSet ds = null;
strExcel = "select * from [Sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds);
return ds;
}
2. 将DataSet数据导入到数据库中代码实现:
1 protected void btn_AddSalary_Click(object sender, EventArgs e)
2 {
3 bool fileOK = false;
4 String pagenum = Request.QueryString["pagenum"];
5 if (this.UpFile.PostedFile.ContentLength > 0)
6 {
7 int Pos = UpFile.PostedFile.FileName.LastIndexOf("\\") + 1;
8 String FileName = UpFile.PostedFile.FileName.Substring(Pos);
9 String FilePath = "./tmp/" + FileName;
String fileExtension = System.IO.Path.GetExtension(UpFile.FileName).ToLower();
String[] allowedExtensions = { ".xls" };
String BatchID=Request.QueryString["BatchID"];
lberror.Text = "";
foreach (String allowedExtension in allowedExtensions)
{
if (fileExtension == allowedExtension)
fileOK = true;
}
if (fileOK == true)
{
UpFile.PostedFile.SaveAs(Server.MapPath(FilePath));
UpFile.PostedFile.InputStream.Close();
DataSet execl=ExcelToDS(Server.MapPath(FilePath));
List<String> empid = new List<String>();
bool empfalse = false;
OperationResult or = new OperationResult();
String getempid = null;
for (int s = 1; s < (execl.Tables[0].Rows.Count); s++)
{
//判断是否有此员工如果有则插入工资
getempid = (TrainingService.getEmpID(execl.Tables[0].Rows[s][0].ToString()).ToString());
if (getempid != "0")
{
empid.Add(getempid);
// lbright.Text += execl.Tables[0].Rows[s][0].ToString()+ ",";
}
else
{
lberror.Text +=execl.Tables[0].Rows[s][0].ToString()+",";
empfalse = true;
}
}
if (!empfalse) //如果导入名单正确则执行循环插入值
{
foreach(String newempid in empid)
{
int i = 1;
for (int k = 0; k < (execl.Tables[0].Columns.Count); k++)
{
String SalaryItem = execl.Tables[0].Columns[k].ToString();
String SalaryItemType = null;
String SalaryValue = null;
if (k != 0 && k != 1)
{
SalaryItemType = execl.Tables[0].Rows[0][k].ToString();
}
if (k != 0 && k != 1) //姓名不插入到数据库中
{
SalaryValue = execl.Tables[0].Rows[i][k].ToString();
if (SalaryValue == null || SalaryValue == "")
{
SalaryValue = "0";
}
Dictionary<String, String> SalaryItem_Info =
DictionaryHelper.CreateDictionary("@EmpID,@ItemName,@ItemValue,@ItemType,@BatchID,@Seq",
newempid, SalaryItem, SalaryValue, SalaryItemType, BatchID, k.ToString());
bool result = SalaryService.Add_Salary_Item(SalaryItem_Info);
or.IsSuccess = result;
}
}
i++;
}
or.ResultMsg.Add("导入工资批次成功");
or.AddReturnURL("普通返回", "/manage/salary/salary_batch_list.aspx?pagenum=" + pagenum);
}
else
{
or.ResultMsg.Add("导入工资批次失败 "+lberror.Text);
or.AddReturnURL("返回到填回页", "/manage/salary/salary_item_import.aspx?BatchID=" + BatchID + "&pagenum="+pagenum);
}
Session[Constants.EXECUTE_RESULT] = or;
Server.Transfer("~/result_report.aspx");
}
else
{
WindowHelper.Alert("上传文件类型不正确!", this);
return;
}
}
else
{
WindowHelper.Alert("请选择上传的文件!", this);
return;
}
[/align]1. 将execl数据导到入DataSet中代码实现:
1 public DataSet ExcelToDS(string Path)
2 {
3 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
4 "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
5 OleDbConnection conn = new OleDbConnection(strConn);
6 conn.Open();
7 string strExcel = "";
8 OleDbDataAdapter myCommand = null;
9 DataSet ds = null;
strExcel = "select * from [Sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds);
return ds;
}
2. 将DataSet数据导入到数据库中代码实现:
1 protected void btn_AddSalary_Click(object sender, EventArgs e)
2 {
3 bool fileOK = false;
4 String pagenum = Request.QueryString["pagenum"];
5 if (this.UpFile.PostedFile.ContentLength > 0)
6 {
7 int Pos = UpFile.PostedFile.FileName.LastIndexOf("\\") + 1;
8 String FileName = UpFile.PostedFile.FileName.Substring(Pos);
9 String FilePath = "./tmp/" + FileName;
String fileExtension = System.IO.Path.GetExtension(UpFile.FileName).ToLower();
String[] allowedExtensions = { ".xls" };
String BatchID=Request.QueryString["BatchID"];
lberror.Text = "";
foreach (String allowedExtension in allowedExtensions)
{
if (fileExtension == allowedExtension)
fileOK = true;
}
if (fileOK == true)
{
UpFile.PostedFile.SaveAs(Server.MapPath(FilePath));
UpFile.PostedFile.InputStream.Close();
DataSet execl=ExcelToDS(Server.MapPath(FilePath));
List<String> empid = new List<String>();
bool empfalse = false;
OperationResult or = new OperationResult();
String getempid = null;
for (int s = 1; s < (execl.Tables[0].Rows.Count); s++)
{
//判断是否有此员工如果有则插入工资
getempid = (TrainingService.getEmpID(execl.Tables[0].Rows[s][0].ToString()).ToString());
if (getempid != "0")
{
empid.Add(getempid);
// lbright.Text += execl.Tables[0].Rows[s][0].ToString()+ ",";
}
else
{
lberror.Text +=execl.Tables[0].Rows[s][0].ToString()+",";
empfalse = true;
}
}
if (!empfalse) //如果导入名单正确则执行循环插入值
{
foreach(String newempid in empid)
{
int i = 1;
for (int k = 0; k < (execl.Tables[0].Columns.Count); k++)
{
String SalaryItem = execl.Tables[0].Columns[k].ToString();
String SalaryItemType = null;
String SalaryValue = null;
if (k != 0 && k != 1)
{
SalaryItemType = execl.Tables[0].Rows[0][k].ToString();
}
if (k != 0 && k != 1) //姓名不插入到数据库中
{
SalaryValue = execl.Tables[0].Rows[i][k].ToString();
if (SalaryValue == null || SalaryValue == "")
{
SalaryValue = "0";
}
Dictionary<String, String> SalaryItem_Info =
DictionaryHelper.CreateDictionary("@EmpID,@ItemName,@ItemValue,@ItemType,@BatchID,@Seq",
newempid, SalaryItem, SalaryValue, SalaryItemType, BatchID, k.ToString());
bool result = SalaryService.Add_Salary_Item(SalaryItem_Info);
or.IsSuccess = result;
}
}
i++;
}
or.ResultMsg.Add("导入工资批次成功");
or.AddReturnURL("普通返回", "/manage/salary/salary_batch_list.aspx?pagenum=" + pagenum);
}
else
{
or.ResultMsg.Add("导入工资批次失败 "+lberror.Text);
or.AddReturnURL("返回到填回页", "/manage/salary/salary_item_import.aspx?BatchID=" + BatchID + "&pagenum="+pagenum);
}
Session[Constants.EXECUTE_RESULT] = or;
Server.Transfer("~/result_report.aspx");
}
else
{
WindowHelper.Alert("上传文件类型不正确!", this);
return;
}
}
else
{
WindowHelper.Alert("请选择上传的文件!", this);
return;
}
相关文章推荐
- C#实现向已存在的Excel文件中写入数据实例(两种方法)
- java从Excel文件读取数据到数据库和从读取数据库数据写入Excel
- 从数据库读取数据写入excel并调用Winrar加密压缩输出
- 数据库连接方式读取不到Excel数据值的解决方法
- java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- 将Excel上传到服务器,读取Excel数据写入到数据库
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- java实现从数据库读取数据写入excel,写入多个sheet,6万数据耗时100秒附近
- python读取excel指定列数据并写入到新的excel方法
- 用C#编程从数据库中读取图片数据导进Excel文件的方法
- SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- ObjectARX中调用ADO封装类实现数据库查询读取写入数据的一个类实例
- 数据库连接方式读取不到Excel数据值的解决方法
- phpexcel 读取含多个sheet的excel,将从数据库中检索出的数据分别写入该excel不同的sheet中 并导出该excel
- Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
- ObjectARX中调用ADO封装类实现数据库查询读取写入数据的一个类实例
- 用C#编程从数据库中读取图片数据导进Excel文件的方法
- [转]数据库连接方式读取不到Excel数据值的解决方法