找回密码
 立即注册

QQ登录

只需一步,快速开始

bingdaoice

中级会员

44

主题

208

帖子

608

积分

中级会员

积分
608
bingdaoice
中级会员   /  发表于:2019-4-10 09:07  /   查看:3050  /  回复:5
本帖最后由 bingdaoice 于 2019-4-16 19:50 编辑

请问如何合并两个文档(或将图2的文件内容复制至图1 下面,保持内容及格式不变)?两个文档的列数和列宽是一样的,需要将图2的内容及格式合并(或复制粘贴)到图1的下面(内容格式样式不变),合成一个文件,附件里面是图上的2个模板文件。

2个模板文件.rar

39.42 KB, 下载次数: 49

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-10 19:17:11
沙发
先通过将第二个excel sheet保存为xml的方式合并两个文件

spread2.activesheet.Save(xml)
spread1.AddNewSheetView 添加sheet ,新sheet调用Open方法加载xml

合并后调用ClipboardCopy 和ClipboardPaste复制粘贴range
回复 使用道具 举报
bingdaoice
中级会员   /  发表于:2019-4-13 15:54:23
板凳
本帖最后由 bingdaoice 于 2019-4-16 19:50 编辑
dexteryao 发表于 2019-4-10 19:17
先通过将第二个excel sheet保存为xml的方式合并两个文件

spread2.activesheet.Save(xml)

我按照你说的方法测试过了,没有成功,得到的结果是:在 Spread1只添加了一个新的空白工作表。并没有把第二个报表内容复制到第一个报表的下面。以下是我的代码
Spread_Certif.Open(表1路径);
FarPoint.Win.Spread.SheetView sv = Spread_Certif.AddNewSheetView();
sv.Open(表2路径);
sv.ClipboardCopy();
Spread_Certif.Sheets[0].ClipboardPaste();

可否给我一个能成功合并两个报表的DEMO,谢谢!
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-15 17:35:37
地板
请参考如下代码:

  1.         private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             fpSpread2.ActiveSheet.Save("temp.xml",false);
  4.             var newSheet = new FarPoint.Win.Spread.SheetView();
  5.             newSheet.Open("temp.xml");
  6.             newSheet.SheetName = "NewSheet";
  7.             fpSpread1.Sheets.Add(newSheet);
  8.             fpSpread1.Sheets[1].AddSelection(0, 0, newSheet.RowCount, newSheet.ColumnCount);
  9.             fpSpread1.Sheets[1].ClipboardCopy(fpSpread1.Sheets[1].GetSelection(0));

  10.             fpSpread1.Sheets[0].AddRows(fpSpread1.Sheets[0].RowCount, fpSpread1.Sheets[1].RowCount);
  11.             fpSpread1.Sheets[0].SetActiveCell(fpSpread1.Sheets[0].RowCount - fpSpread1.Sheets[1].RowCount, 0);
  12.             fpSpread1.ActiveSheet.ClipboardPaste(ClipboardPasteOptions.All);
复制代码
回复 使用道具 举报
bingdaoice
中级会员   /  发表于:2019-4-16 11:24:20
6#
本帖最后由 bingdaoice 于 2019-4-16 19:51 编辑

按照楼上版主的方法,实现了成功合并,但新的问题出现了;合并后的格式未达到与文件本身格式的完全一致。图1为文件本身的格式,图片2为合并后的格式。
图片2中的两处行高与图1不一样,
图片1中的“标准器”本身是带有边框线的,合并后没有边框线。




回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-16 12:33:11
7#
行高复制不了,您遍历重新设置一遍即可,
边框应该是样式继承问题。参考如下代码,把样式再每个单元格重新设置一遍再复制。


  1.             fpSpread2.SuspendLayout();
  2.             for(var i = 0;i <fpSpread2.ActiveSheet.RowCount;i++)
  3.                 for (var j = 0; j < fpSpread2.ActiveSheet.ColumnCount; j++)
  4.                 {
  5.                     fpSpread2.ActiveSheet.SetStyleInfo(i, j, fpSpread2.ActiveSheet.GetStyleInfo(i, j));
  6.                 }
  7.             fpSpread2.ResumeLayout();
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部