2011-04-28 103 views
-1

发现的解决方案:检查岗复制Excel中排在Visual Basic .NET(VS 2008,.NET Framework 3.5中)

你好底部,

我使用Excel对象模型(导入命名空间微软。 Office.Interop.Excel)在我的代码中打开一个Excel.Application对象,然后打开一个工作簿,工作表等。我在做的事很简单:我打开两个工作表对象;一个已经填充了数据,另一个是空的,应该填充第一个工作表中的一些行。如果关于第一个工作表中的单元格的某些条件未得到满足,则我想要复制第二个工作表中第一个可用行的整个行。我有一个整数计数器,初始化为1,这将索引输出工作表中的第一个空行,每当我在outputSheet.Rows(counter)处插入一行时,该计数器显然会递增。

我谷歌每一个解决方案要么使用VBA(我正在寻找一个基于VB.NET的解决方案)或与.NET框架3.5(我在运行时收到异常)不兼容。我猜测我没有正确使用Range对象或某些东西;无论如何,做这件事最简单的方法是什么?我真的不想打开一个到我的Excel文件的OLEDB连接:这对于我试图实现的简单行复制机制来说太复杂了。

感谢,

杰森

编辑#1:典型的那种Excel中记录我不得不面对:

1 | V | 1 | 01078215 | 02 |全名

2 | V | 1 | 8048321 | 01 |全名

例如,如果行的第四个单元格不是8位数字,我想将行按原样复制到第二个excel文件中。

编辑#2:代码:

'copy a row from an excel spreadsheet to another 

Sub CopyRowTo(ByVal input As Excel.Worksheet, 

        ByVal output As Excel.Worksheet, 

        ByVal row_in As Integer, 

        ByVal row_out As Integer) 

    input.Activate() 

    input.Rows(row_in).Select() 

    input.Rows(row_in).Copy() 

    output.Activate() 

    output.Rows(row_out).Select() 

    output.Rows(row_out).Paste() 

End Sub 

称为:CopyRowTo(inputSheet,outputSheet,1,1)

溶液中发现:

我已经找到了解决我的问题。下面的代码的伎俩:

input.Activate() 

input.Rows(row_in).Copy() 

output.Activate() 

output.Rows(row_out).Select() 

output.Paste() 

看来,出于某种原因,我需要粘贴方法适用于Excel.Worksheet对象,具有后选择() - 编包含在该对象内的范围(诚实地说,我根本没有得到VB.NET)。

谢谢

Ĵ

+0

请提供sheet1数据示例及其在sheet2中的显示方式。显示你迄今为止编写的代码。使用VBA代码时看到什么错误? – shahkalpesh 2011-04-28 08:13:53

+0

表1数据示例,其中不同的字段用“|”分隔: 1 | V | 1 | 01078215 |地址|邮编|城市1 2 | V | 3 | 0567892 |地址2 |邮政编码2 |城市2 例如,如果4th字段没有8位数字(第二行就是这种情况),我需要将整个Excel行复制到新的电子表格中。就是这样,没有额外的格式。 – Jason 2011-04-28 09:51:44

+0

我一直在使用在起始帖子的“编辑:代码”部分提供的代码。 但是,我收到一个异常,指出“Paste()”不是Range类的有效公共成员。这与以下Microsoft文档相矛盾:http://msdn.microsoft.com/zh-cn/library/ aa220332%28v = office.11​​%29.aspx – Jason 2011-04-28 09:54:13

回答

1

如果您的免费版本(每片150行,最多5个工作表)的限制之内,该Gembox库可以很容易: http://www.gemboxsoftware.com/GBSpreadsheetFree.htm

可能还有其他类似的东西可用。

+0

不幸的是,这项工作涉及能源供应商收到的excel电子表格,远远超过150行。但是谢谢你的兴趣。 – Jason 2011-04-28 08:18:01

相关问题