找回密码
 立即注册

QQ登录

只需一步,快速开始

表格6666

金牌服务用户

81

主题

204

帖子

587

积分

金牌服务用户

积分
587
表格6666
金牌服务用户   /  发表于:2024-1-23 10:32  /   查看:1478  /  回复:8
本帖最后由 Lynn.Dou 于 2024-2-6 14:09 编辑

产品:GcExcel .net
版本:V6.2.5

复制合并单元格样式复制不正确
最后输出结果:
image.png640109862.png

使用代码:
  1. const string path = @"D:\Download\603717_03a0e44f-d637-4ea9-9ad2-d82558e8827d_new.json";
  2. // output pid
  3. Process currentProcess = Process.GetCurrentProcess();
  4. Console.WriteLine($"pid: {currentProcess.Id}");

  5. Workbook sourceWorkbook = new Workbook();
  6. // workbook.Open(path, OpenFileFormat.Sjs);
  7. sourceWorkbook.FromJson(File.ReadAllText(path));
  8. IRange source = sourceWorkbook.Worksheets[0].Range["C2:N2"];

  9. Workbook targetWorkbook = new Workbook();
  10. targetWorkbook.FromJson(sourceWorkbook.ToJson());
  11. targetWorkbook.Worksheets[0].GetUsedRange().Clear();
  12. IRange target = sourceWorkbook.Worksheets[0].Range[source.Row, source.Column, source.RowCount, source.ColumnCount];

  13. // copy style
  14. source.Copy(target, new PasteOption
  15. {
  16.     PasteType = PasteType.Formats | PasteType.ColumnWidths | PasteType.RowHeights
  17. });
  18. target.Value = source.Value;

  19. // save to target.sjs
  20. targetWorkbook.Save(@"D:\Download\target.sjs", SaveFileFormat.Sjs);

  21. string json = targetWorkbook.ToJson();
  22. // save to target.json
  23. File.WriteAllText(@"D:\Download\target.json", json);
复制代码





image.png919272460.png

603717_03a0e44f-d637-4ea9-9ad2-d82558e8827d_new.json

51.04 KB, 下载次数: 85

8 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-1-23 16:15:31
沙发
您好,我注意到您的另一篇帖子也是复制粘贴合并单元格导致样式丢失的问题:https://gcdn.grapecity.com.cn/fo ... read&tid=202076

请问是否是同一个问题?
回复 使用道具 举报
表格6666
金牌服务用户   /  发表于:2024-1-24 11:46:22
板凳
这个问题是期望的合并单元格没有合并,且样式也丢失了。和合并单元格框线不正确是两个问题
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-1-24 14:51:35
地板
表格6666 发表于 2024-1-24 11:46
这个问题是期望的合并单元格没有合并,且样式也丢失了。和合并单元格框线不正确是两个问题

您好,我注意到您的代码中有一句:targetWorkbook.Worksheets[0].GetUsedRange().Clear();这个会清除区域的样式包括合并单元格,然后您的剩余操作就和您保存的workbook没有关系了,我不太确定我选中的代码您是想要做什么
image.png322486876.png
回复 使用道具 举报
表格6666
金牌服务用户   /  发表于:2024-1-24 15:30:45
5#
本帖最后由 表格6666 于 2024-1-24 15:32 编辑
  1.         const string path = @"D:\Download\603717_03a0e44f-d637-4ea9-9ad2-d82558e8827d_new.json";
  2.         // output pid
  3.         Process currentProcess = Process.GetCurrentProcess();
  4.         Console.WriteLine($"pid: {currentProcess.Id}");

  5.         Workbook sourceWorkbook = new Workbook();
  6.         // workbook.Open(path, OpenFileFormat.Sjs);
  7.         sourceWorkbook.FromJson(File.ReadAllText(path));
  8.         IRange source = sourceWorkbook.Worksheets[0].Range["C2:N2"];

  9.         Workbook targetWorkbook = new Workbook();
  10.         targetWorkbook.FromJson(sourceWorkbook.ToJson());
  11.         targetWorkbook.Worksheets[0].GetUsedRange().Clear();
  12.         IRange target = targetWorkbook.Worksheets[0].Range[source.Row, source.Column, source.RowCount, source.ColumnCount];
  13.         
  14.         // copy style
  15.         source.Copy(target, new PasteOption
  16.         {
  17.             PasteType = PasteType.Formats | PasteType.ColumnWidths | PasteType.RowHeights
  18.         });
  19.         target.Value = source.Value;
  20.         
  21.         // save to target.sjs
  22.         targetWorkbook.Save(@"D:\Download\target.sjs", SaveFileFormat.Sjs);
  23.         
  24.         string json = targetWorkbook.ToJson();
  25.         // save to target.json
  26.         File.WriteAllText(@"D:\Download\target.json", json);
复制代码
之前代码是不正确的,我们希望是跨workbook的复制,targetworkbook在clear之后,从source重新复制一遍
回复 使用道具 举报
表格6666
金牌服务用户   /  发表于:2024-1-24 15:45:56
6#
Richard.Huang 发表于 2024-1-24 14:51
您好,我注意到您的代码中有一句:targetWorkbook.Worksheets[0].GetUsedRange().Clear();这个会清除区域 ...

不好意思,我发现我的代码在14行写错了,应该为IRange target = targetWorkbook..................
我修改下试试
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-1-24 16:42:31
7#
表格6666 发表于 2024-1-24 15:45
不好意思,我发现我的代码在14行写错了,应该为IRange target = targetWorkbook..................
我修 ...

回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-1-26 09:35:07
8#
您好,请问楼主的问题是否得到解决,如果仍然存在问题,欢迎继续跟帖询问
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-2-4 15:05:39
9#
您好,由于您长时间未回帖,本贴就先作结帖处理了,后续如果有其他新的问题,欢迎继续发新帖询问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部