C#导出EXCEL问题---导出EXCEL工作表间的关联问题.(在线等,高手请进)

时间:2021-08-07 09:20:36
我想将一个EXCEL导出到SQLSERVER中,
EXCEL中有几千张工作表。其中,
主表SHEET1有姓名 电话 年龄等用户信息,姓名字段有连接;
消费信息表SHEET2、SHEET3。。。。SHEETN,每张表都是纪录主表SHEET1中单个用户相关消费信息的。
我想把相关的消费信息也导出到SQLSERVER另一张表中,并存在跟主表存在一个关联关系。

现在的问题是,在导出主表的时候,我没有办法导出名字上的那个连接地址,这样就不能建立用户表和消费信息表的对应关系了。
后来想将这个连接用个什么公式写在主表的某个字段里一并导出,问了EXCEL高手,可是失败了。
怎样才能得到这个连接呢?

18 个解决方案

#1


自己顶

#2


这个问题,有点麻烦, 建议你先读到dataset里 ,然后用relations 来处理,一下。
如果我说的不对 ,就算帮你顶。

#3


引用 2 楼 jason_dct 的回复:
这个问题,有点麻烦, 建议你先读到dataset里 ,然后用relations 来处理,一下。
如果我说的不对 ,就算帮你顶。


我还顶!!!没有人会吗?

#4


这个帖子又悲剧了?

#5


呵呵,楼主在这啊,我把代码整理下就发上来。

#6


引用 5 楼 gramaster 的回复:
呵呵,楼主在这啊,我把代码整理下就发上来。


哦?可以实现? 

#7


使用DataSet将相关联的数据处理好再保存到SQL Server中吧

#8


这个是引用EXCEL类库的,前面那些代码一大堆我就不贴了,我把这个贴上来,亲测成功

string ohlk="";
        if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address != null)//因为Hyperlinks有外联结的,就是这个Address,NULL就说明无外联结
        {
            ohlk = ((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address.ToString();
        }
        else if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).SubAddress != null)//SubAddress表示是表内SHEET的链接
        {
            ohlk = ((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).SubAddress.ToString();
        }
        worksheet.Cells[2, 1] = ohlk.ToString();//结果是把单元格A3的链接写到单元格A2中区了,楼主你可以参考改成自己的

#9


引用 7 楼 guyehanxinlei 的回复:
使用DataSet将相关联的数据处理好再保存到SQL Server中吧


没法处理,想要的提取不到.

#10


引用 8 楼 gramaster 的回复:
这个是引用EXCEL类库的,前面那些代码一大堆我就不贴了,我把这个贴上来,亲测成功

string ohlk="";
if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address != null)//因为Hyperlinks有外联结的,就是这个Address,NULL就说明无外联结
{
o……



太感谢了,我这就试试!!!

#11


 public string GetCellLink(Excel.Worksheet ws, int x, int y)
        {
            string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address;
            return url;
        }
简单一点..

#12


不太清楚,这里有几个例子

C#导出Excel几个应用实例  www.phome.asia/forum/thread/23341.html



#13


引用 8 楼 gramaster 的回复:
这个是引用EXCEL类库的,前面那些代码一大堆我就不贴了,我把这个贴上来,亲测成功

string ohlk="";
if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address != null)//因为Hyperlinks有外联结的,就是这个Address,NULL就说明无外联结
{
o……



可否把全部代码发出来看看

#14


 帮顶 争取楼主不成杯具贴 
我一般的方法都是先导入到gridview 再从gridview导入到数据库 虽然复杂 但是不出错.

#15


我之前做的一个小软件是读TXT的数据 在 DATAgideview显示,然后写入excel,导入SQL数据库,我提议不妨你先用DATAGRIDVIEW读出来在导入数据库中。。。。 好的方法我还没试过,,,希望有好的方法贴出来分享

#16


中午睡觉去了,我的代码在这个地址,大家看到的也帮我看下吧,郁闷死了。
地址如下: http://topic.csdn.net/u/20100325/21/c822a751-a321-4f50-9982-63a503848498.html

#17


引用 11 楼 yxin111 的回复:
public string GetCellLink(Excel.Worksheet ws, int x, int y)
{
string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address;
return url;
}
简单一点..

11楼的别忘了哦,注意看我的代码有说明哦,Address是外链接,内链接是SubAddress哦,改成这样吧
public string GetCellLink(Excel.Worksheet ws, int x, int y)
{
if((ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address!=null)
{string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address;}
else if((ws.Cells[x, y] as Excel.Range).Hyperlinks[1].SubAddress!=null)
{string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].SubAddress;}
else {string url =""}
return url;
}

#18


楼主你C#稍微熟悉点的话,看我们的代码再根据你自己原来的代码改下就好了,你不熟悉的话给你身边的朋友看下,懂的人的话改下就好了,我们上面的代码就是返回链接字符串的,你就可以把它作为参数传递给存储过程存进数据库了。

#1


自己顶

#2


这个问题,有点麻烦, 建议你先读到dataset里 ,然后用relations 来处理,一下。
如果我说的不对 ,就算帮你顶。

#3


引用 2 楼 jason_dct 的回复:
这个问题,有点麻烦, 建议你先读到dataset里 ,然后用relations 来处理,一下。
如果我说的不对 ,就算帮你顶。


我还顶!!!没有人会吗?

#4


这个帖子又悲剧了?

#5


呵呵,楼主在这啊,我把代码整理下就发上来。

#6


引用 5 楼 gramaster 的回复:
呵呵,楼主在这啊,我把代码整理下就发上来。


哦?可以实现? 

#7


使用DataSet将相关联的数据处理好再保存到SQL Server中吧

#8


这个是引用EXCEL类库的,前面那些代码一大堆我就不贴了,我把这个贴上来,亲测成功

string ohlk="";
        if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address != null)//因为Hyperlinks有外联结的,就是这个Address,NULL就说明无外联结
        {
            ohlk = ((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address.ToString();
        }
        else if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).SubAddress != null)//SubAddress表示是表内SHEET的链接
        {
            ohlk = ((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).SubAddress.ToString();
        }
        worksheet.Cells[2, 1] = ohlk.ToString();//结果是把单元格A3的链接写到单元格A2中区了,楼主你可以参考改成自己的

#9


引用 7 楼 guyehanxinlei 的回复:
使用DataSet将相关联的数据处理好再保存到SQL Server中吧


没法处理,想要的提取不到.

#10


引用 8 楼 gramaster 的回复:
这个是引用EXCEL类库的,前面那些代码一大堆我就不贴了,我把这个贴上来,亲测成功

string ohlk="";
if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address != null)//因为Hyperlinks有外联结的,就是这个Address,NULL就说明无外联结
{
o……



太感谢了,我这就试试!!!

#11


 public string GetCellLink(Excel.Worksheet ws, int x, int y)
        {
            string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address;
            return url;
        }
简单一点..

#12


不太清楚,这里有几个例子

C#导出Excel几个应用实例  www.phome.asia/forum/thread/23341.html



#13


引用 8 楼 gramaster 的回复:
这个是引用EXCEL类库的,前面那些代码一大堆我就不贴了,我把这个贴上来,亲测成功

string ohlk="";
if (((Excel.Range)worksheet.Cells.get_Item(1, 3)).Hyperlinks.get_Item(1).Address != null)//因为Hyperlinks有外联结的,就是这个Address,NULL就说明无外联结
{
o……



可否把全部代码发出来看看

#14


 帮顶 争取楼主不成杯具贴 
我一般的方法都是先导入到gridview 再从gridview导入到数据库 虽然复杂 但是不出错.

#15


我之前做的一个小软件是读TXT的数据 在 DATAgideview显示,然后写入excel,导入SQL数据库,我提议不妨你先用DATAGRIDVIEW读出来在导入数据库中。。。。 好的方法我还没试过,,,希望有好的方法贴出来分享

#16


中午睡觉去了,我的代码在这个地址,大家看到的也帮我看下吧,郁闷死了。
地址如下: http://topic.csdn.net/u/20100325/21/c822a751-a321-4f50-9982-63a503848498.html

#17


引用 11 楼 yxin111 的回复:
public string GetCellLink(Excel.Worksheet ws, int x, int y)
{
string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address;
return url;
}
简单一点..

11楼的别忘了哦,注意看我的代码有说明哦,Address是外链接,内链接是SubAddress哦,改成这样吧
public string GetCellLink(Excel.Worksheet ws, int x, int y)
{
if((ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address!=null)
{string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].Address;}
else if((ws.Cells[x, y] as Excel.Range).Hyperlinks[1].SubAddress!=null)
{string url = (ws.Cells[x, y] as Excel.Range).Hyperlinks[1].SubAddress;}
else {string url =""}
return url;
}

#18


楼主你C#稍微熟悉点的话,看我们的代码再根据你自己原来的代码改下就好了,你不熟悉的话给你身边的朋友看下,懂的人的话改下就好了,我们上面的代码就是返回链接字符串的,你就可以把它作为参数传递给存储过程存进数据库了。