找回密码
 立即注册

QQ登录

只需一步,快速开始

liuyong

中级会员

6

主题

15

帖子

683

积分

中级会员

积分
683

活字格认证

liuyong
中级会员   /  发表于:2013-4-3 14:15  /   查看:7868  /  回复:7
把Execl中的数据导入到数据库怎么判断是否跟数据中的数据重复,或者是检验跟先前导入的数据一样!希望能有Demo代码演示!谢谢~~~急

7 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-4-3 14:36:00
沙发
回复 1楼liuyong的帖子

你好,
Spread 中每条数据对应 数据库中 Table 中一条数据,这点只能通过取出单元格的值和数据表中 DataRow 的值,逐一比较判断。
回复 使用道具 举报
liuyong
中级会员   /  发表于:2013-4-3 14:44:00
板凳
回复 2楼iceman的帖子

能用几条代码演示下不?谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-4-3 17:55:00
地板
回复 3楼liuyong的帖子

参考代码如下:

  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.             {
  5.                 return;
  6.             }
  7.             dt.Columns.Add("col1");
  8.             dt.Columns.Add("col2");

  9.             dt.Rows.Add("1", "1");
  10.             dt.Rows.Add("2", "2");
  11.             dt.Rows.Add("2", "2");
  12.         }

  13.         protected void FpSpread1_UpdateCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
  14.         {
  15.             bool isEquql = true;
  16.             ArrayList editValues = e.EditValues;

  17.             foreach (DataRow item in dt.Rows)
  18.             {
  19.                 for (int i = 0; i < editValues.Count; i++)
  20.                 {
  21.                     if (item[i].ToString()!=editValues[i].ToString())
  22.                     {
  23.                         isEquql = false;
  24.                     }
  25.                 }
  26.             }

  27.         }
复制代码
回复 使用道具 举报
liuyong
中级会员   /  发表于:2013-4-5 10:52:00
5#
回复 4楼iceman的帖子

你好!请原谅我的愚笨,我用你的代码后好像根本不能获取数据库中的数据到table中,从而不能比较!我的问题是我上传了一个execl文件,在上传的同时检查数据跟数据库是否一样,有重复的就报错,或提示不能导入所用的是一个按钮,点击按钮完成以上的功能!谢谢
回复 使用道具 举报
gaoge00
论坛元老   /  发表于:2013-4-5 12:54:00
6#
回复 5楼liuyong的帖子

你好,不知你是什么数据库,MySQL ,SqlServer ,都是支持一条语句 更新或者插入的,你可以去做一下这方面的搜索
回复 使用道具 举报
liuyong
中级会员   /  发表于:2013-4-5 13:36:00
7#
回复 6楼gaoge00的帖子

是SqlServer数据库!但我还是不会呢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-4-7 10:19:00
8#
回复 7楼liuyong的帖子

你好,
思路为设置 临时 spread 读取当前 excel表格,再通过逐一单元格值对比实现“数据重复判断”。大体代码如下,具体还需要完善:

  1.         protected void Button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.spread.Reset();

  4.             bool flag = false;

  5.             dt.Columns.Add("col1");
  6.             dt.Columns.Add("col2");

  7.             dt.Rows.Add("1", "1");
  8.             dt.Rows.Add("2", "2");
  9.             dt.Rows.Add("2", "2");

  10.             this.spread.OpenExcel(this.Server.MapPath("Book1.xlsx"));

  11.             for (int i = 0; i < this.spread.Sheets[0].RowCount; i++)
  12.             {
  13.                 for (int j = 0; j < this.spread.Sheets[0].ColumnCount; j++)
  14.                 {
  15.                     if (this.spread.Sheets[0].Cells[i, j].Text != dt.Rows[i][j].ToString())
  16.                     {
  17.                     }
  18.                     else
  19.                     {
  20.                     }
  21.                 }

  22.             }

  23.             if (flag)
  24.             {
  25.                 this.Response.Write("<script>alert('有重复数据')</script>");
  26.             }
  27.             else
  28.             {
  29.                 this.Response.Write("<script>alert('无重复数据')</script>");
  30.                 this.FpSpread1.OpenExcel(this.Server.MapPath("Book1.xlsx"));
  31.             }

  32.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部