经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
详解C#如何在不同工作簿之间复制选定单元格区域
来源:jb51  时间:2023/2/10 9:17:44  对本文有异议

在处理 Excel 文档时,我们经常需要将数据整合到一个工作表以便于我们进行管理或数据对比。为了提高工作效率,我们可以在不同的工作簿之间复制选定的单元格区域或整个工作表。本文将演示如何通过编程方式将选定的单元格区域从一个工作簿复制到另一个工作簿。

程序环境

本次测试时,在程序中引入 Spire.XLS.dll 文件。

方法1:

Free Spire.XLS for .NET?? 下载到本地,解压,找到 BIN 文件夹下的 Spire.XLS.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。

方法2::

通过?NuGet??安装。可通过以下 2 种方法安装:

 1. 可以在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理 NuGet 包”,然后搜索“Free Spire.XLS”,点击“安装”。等待程序安装完成。

 2. 将以下内容复制到 PM 控制台安装。

Install-Package FreeSpire.XLS -Version 12.7

不同工作簿之间复制单元格范围

  • 创建一个Workbook对象以加载源 Excel 文档。
  • 分别使用 Workbook.Worksheets 属性和 Worksheet.Range 属性获取源工作表和源单元格区域。
  • 创建另一个Workbook对象以加载目标 Excel 文档。
  • 获取目标工作表和单元格区域。
  • 使用 Worksheet.Copy(CellRange source, CellRange destRange) 将数据从源区域复制到目标区域。
  • 将源区域的列宽复制到目标区域,以便数据可以在目标工作簿中正常显示。
  • 使用 Workbook.SaveToFile() 方法将目标工作簿保存到 Excel 文件。

完整代码

C#

  1. using Spire.Xls;
  2.  
  3. namespace CopyCellRange
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. //创建一个Workbook对象
  10. Workbook sourceBook = new Workbook();
  11.  
  12. //加载源 Excel 文档
  13. sourceBook.LoadFromFile("营业状况表.xlsx");
  14.  
  15. //获取源工作表
  16. Worksheet sourceSheet = sourceBook.Worksheets[0];
  17.  
  18. //获取源单元格区域
  19. CellRange sourceRange = sourceSheet.Range["A1:G5"];
  20.  
  21. //创建另一个Workbook对象
  22. Workbook destBook = new Workbook();
  23.  
  24. //加载目标工作簿
  25. destBook.LoadFromFile("目标文档.xlsx");
  26.  
  27. //获取目标工作表
  28. Worksheet destSheet = destBook.Worksheets[0];
  29.  
  30. //获取单元格区域
  31. CellRange destRange = destSheet.Range["B2:H6"];
  32.  
  33. //将数据从源范围复制到目标范围
  34. sourceSheet.Copy(sourceRange, destRange);
  35.  
  36. //循环遍历源范围中的列
  37. for (int i = 0; i < sourceRange.Columns.Length; i++)
  38. {
  39. //将列宽也从源范围复制到目标范围
  40. destRange.Columns[i].ColumnWidth = sourceRange.Columns[i].ColumnWidth;
  41. }
  42.  
  43. //将目标工作簿保存到 Excel 文件
  44. destBook.SaveToFile("复制单元格范围.xlsx");
  45. }
  46. }
  47. }

VB.NET

  1. Imports Spire.Xls
  2.  
  3. Namespace CopyCellRange
  4. Friend Class Program
  5. Private Shared Sub Main(ByVal args As String())
  6. '创建一个Workbook对象
  7. Dim sourceBook As Workbook = New Workbook()
  8.  
  9. '加载源 Excel 文档
  10. sourceBook.LoadFromFile("营业状况表.xlsx")
  11.  
  12. '获取源工作表
  13. Dim sourceSheet As Worksheet = sourceBook.Worksheets(0)
  14.  
  15. '获取源单元格区域
  16. Dim sourceRange As CellRange = sourceSheet.Range("A1:G5")
  17.  
  18. '创建另一个Workbook对象
  19. Dim destBook As Workbook = New Workbook()
  20.  
  21. '加载目标工作簿
  22. destBook.LoadFromFile("目标文档.xlsx")
  23.  
  24. '获取目标工作表
  25. Dim destSheet As Worksheet = destBook.Worksheets(0)
  26.  
  27. '获取单元格区域
  28. Dim destRange As CellRange = destSheet.Range("B2:H6")
  29.  
  30. '将数据从源范围复制到目标范围
  31. sourceSheet.Copy(sourceRange, destRange)
  32.  
  33. '循环遍历源范围中的列
  34. For i As Integer = 0 To sourceRange.Columns.Length - 1
  35. '将列宽也从源范围复制到目标范围
  36. destRange.Columns(i).ColumnWidth = sourceRange.Columns(i).ColumnWidth
  37. Next
  38.  
  39. '将目标工作簿保存到 Excel 文件
  40. destBook.SaveToFile("复制单元格范围.xlsx")
  41. End Sub
  42. End Class
  43. End Namespace

效果图

到此这篇关于详解C#如何在不同工作簿之间复制选定单元格区域的文章就介绍到这了,更多相关C#复制选定单元格区域内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号