找回密码
 立即注册

QQ登录

只需一步,快速开始

sakeryu

初级会员

34

主题

122

帖子

322

积分

初级会员

积分
322

活字格认证

sakeryu
初级会员   /  发表于:2012-2-27 17:50  /   查看:9761  /  回复:16
如题。
excel表格数据齐全。通过spread导入excel数据后,从spread表格中观看(注意是观看,就是直接看表格)的时候,表中都有数据(特别是有计算公式的单元格),貌似已经把excel表里面的数字都导入进来了。但实际通过软件存储本表数据的时候并没有获取到单元格中的数字。即将本表单元格上显示的数字获取出来存储到数据库中,获取的时候很多单元格(特别是一些计算公式单元格)都为空值。
不知道大家遇到这个问题没??

后来发现唯一的解决办法就是,每张表找一个空白单元格输入一个“0”(或者找有数字的单元格将数字重新输入一下),然后点击保存,此时程序才会获取到单元格值。

所以就要请问一下,为什么要没张表必须键盘输入才能激活spread信息?是不是我们方法用的不对,还是spread本身就有这个问题?

后:我们尝试用spread设计器本身将excel打开后保存为2007或者xml格式,再用我们程序导入,问题依旧。

16 个回复

正序浏览
iceman
社区贡献组   /  发表于:2012-3-1 11:25:00
17#

回复 16# sakeryu 的帖子

sakeryu 你好,
1.使用 Spread 打开 “zjk000303 - 副本.xls”,读取利润表中的 D7 和 F7 单元格,可以正常读取并且存储,需要注意的是利润表表单的索引为 1,下面是我的代码。

  1.         private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.OpenExcel(@"E:\zjk000303 - 副本.xls");
  4.         }

  5.         private void button2_Click(object sender, EventArgs e)
  6.         {
  7.             SqlCommand dbComm = new SqlCommand();
  8.             string sqlCommand = string.Format("insert into table1 (col1,col2,col3) values({0},{1},'{2}')", this.fpSpread1.Sheets[1].Cells[6, 3].Value, 1, this.fpSpread1.Sheets[1].Cells[6, 5].Value);
  9.             dbComm.CommandText = sqlCommand;
  10.             dbComm.Connection = dbCon;
  11.             try
  12.             {
  13.                 dbCon.Open();
  14.                 dbComm.ExecuteNonQuery();
  15.                 dbCon.Close();
  16.             }
  17.             catch (Exception)
  18.             {

  19.                 throw;
  20.             }
  21.             finally
  22.             {
  23.                 dbCon.Close();
  24.             }
  25.         }
复制代码
回复 使用道具 举报
sakeryu
初级会员   /  发表于:2012-3-1 10:59:00
16#
不好意思,版主你是不是打开的shenhejieguo.xls文件啊?
应该打开”zjk000303 - 副本.xls“这个文件,这才是原始报表。
shenhejieguo.xls是请你参考哪些单元格有那种问题。ok?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-1 10:30:00
15#

回复 14# sakeryu 的帖子

sakeryu 你好,

1.我这里可以正确取值,并且存储,没有重现该问题。为了更快的解决问题,建议发个重现问题的 Demo。

2.下面是我的测试代码:
  1.         private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.OpenExcel(@"E:\shenhejieguo.xls");
  4.         }
  5.         private void button2_Click(object sender, EventArgs e)
  6.         {
  7.             SqlCommand dbComm = new SqlCommand();
  8.             string sqlCommand=string.Format("insert into table1 (col1,col2,col3) values({0},{1},{2})",1,1,this.fpSpread1.Sheets[0].Cells[5,6].Value);
  9.             dbComm.CommandText = sqlCommand;
  10.             dbComm.Connection = dbCon;
  11.             try
  12.             {
  13.                 dbCon.Open();
  14.                 dbComm.ExecuteNonQuery();
  15.                 dbCon.Close();
  16.             }
  17.             catch (Exception)
  18.             {
  19.                 throw;
  20.             }
  21.             finally
  22.             {
  23.                 dbCon.Close();
  24.             }
  25.         }
复制代码
回复 使用道具 举报
sakeryu
初级会员   /  发表于:2012-3-1 09:38:00
14#
刚才没压缩,附件没传上去。不好意思。

决算表2011js.zip

53.86 KB, 下载次数: 224

zip

回复 使用道具 举报
sakeryu
初级会员   /  发表于:2012-3-1 09:36:00
13#
10#中的“保存”就是保存到数据库中,现在问题就是程序没有取得那个合计单元格的值,所以无法保存数据库中,库里面实际是0值,因此审核的时候从数据库提取出的值也是0值。

我把我的excel表传上来给你试试吧。

shenhejieguo那个xls是我导出了,里面左或者右为0值的,基本都是我所描述的那种问题。用spread打开表后,用程序去提取一下相应单元格的值保存到数据库中,看看能不能取出存上吧。
谢谢。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-29 17:09:00
12#
sakeryu 你好:
下面是我的测试 Demo :
Demo 描述:
1.Excel 中有三行,第三行分别为所在列的合计如图:

png

png

2.工程中添加 2 个 Spread,fpSpread1 用来读取 Excel 文件,fpSpread2 用来读取 fpSpread1中 合计单元格的值。
3.Demo 下载:
formulatest.zip (119.76 KB, 下载次数: 194)
回复 使用道具 举报
sakeryu
初级会员   /  发表于:2012-2-29 16:03:00
11#
补充一下,因为项目比较大,不好分拆出程序demo,所以这样发图,不知道能不能明白。版主可以使用excel做一个类似的表格,然后用spread打开试试。
回复 使用道具 举报
sakeryu
初级会员   /  发表于:2012-2-29 16:02:00
10#
D7和F7都是计算公式计算了的,在表格上显示的时候也看见了合计数。但是程序所做的审核公式,在提取这两个单元格的数时就获取不到。只有双击d8、f9等人已一个单元格,或者将其数值重新输入一遍,再保存。然后程序就能获取到d7单元格的值了。
回复 使用道具 举报
sakeryu
初级会员   /  发表于:2012-2-29 15:59:00
9#
如图所示

gif

gif
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部