找回密码
 立即注册

QQ登录

只需一步,快速开始

jin.ye
金牌服务用户   /  发表于:2024-4-3 18:10  /   查看:1872  /  回复:6
public static void main(String[] args) {
    String sourcePath = "L:\\下载文件\\202312011_20231201170318.xlsx";
    String targetPath = "L:\\下载文件\\1514-1100-租赁的计量(新租赁准则)租赁条款&租赁付款额.xlsx";
    FileOutputStream fos = null;
    try {
        // Create a new workbook
Workbook workbook = new Workbook(targetPath);
        Workbook workbookSource = new Workbook(sourcePath);
        int count = workbookSource.getWorksheets().getCount();
        for (int i = 0; i < count; i++) {
            IWorksheet iWorksheet = workbook.getWorksheets().get(workbook.getWorksheets().getCount() - 1);
            workbookSource.getWorksheets().get(i).copyAfter(iWorksheet);
        }
        fos = new FileOutputStream(targetPath);
        workbook.save(fos);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (null != fos) {
            try {
                fos.close();
            } catch (Exception var2) {
            }
        }
    }
}

3dd3e7b69049b255b2f3643ffac3a88.png718269347.png daaf11a066e23972a3dc764ac045208.png580289306.png



使用GC的copyAfter
将源文件的sheet复制到目标文件中后,sheet的字体样式会变

1514-1100-租赁的计量(新租赁准则)–租赁条款&amp;租赁付款额.xlsx

154.26 KB, 阅读权限: 150, 下载次数: 1

202312011_20231201170318.xlsx

15.93 KB, 阅读权限: 150, 下载次数: 1

6 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-7 11:48:38
沙发
您好,经过调研发现是因为您的模板文件中的默认单元格样式被您修改了
image.png32508238.png
如果您没有专门为单元格设置样式(即样式没有专门设置在单元格上),那么这些单元格的样式将自动使用您该工作簿的默认样式,您可以新建一个sheet进行测试。
回复 使用道具 举报
jin.ye
金牌服务用户   /  发表于:2024-4-7 13:55:50
板凳
Richard.Huang 发表于 2024-4-7 11:48
您好,经过调研发现是因为您的模板文件中的默认单元格样式被您修改了

如果您没有专门为单元格设置样式( ...

这个不应该是复制前什么样子复制后就是什么样子的吗
回复 使用道具 举报
jin.ye
金牌服务用户   /  发表于:2024-4-7 15:14:55
地板
Richard.Huang 发表于 2024-4-7 11:48
您好,经过调研发现是因为您的模板文件中的默认单元格样式被您修改了

如果您没有专门为单元格设置样式( ...

image.png483367919.png 目标文件中没有Normal1、Normal5、Normal6

image.png460346068.png 源文件中依然没有Normal1、Normal5、Normal6



image.png252786864.png 复制后的文件中才有Normal1、Normal5、Normal6

回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-7 16:01:51
5#
jin.ye 发表于 2024-4-7 15:14
目标文件中没有Normal1、Normal5、Normal6

源文件中依然没有Normal1、Normal5、Normal6

实际上您可以将本贴中您提供的两个工作簿都打开,为目标工作簿新建一个sheet,然后通过快捷键Ctrl+C和Ctrl+V来进行复制粘贴,为了对比,咱们可以对源工作簿的A2单元格专门设置背景色、设置字体、设置字体的颜色后进行复制粘贴,粘贴结果我们可以看到,没有”单独照顾的单元格“都发生了变化,变成了这个工作簿上设置的默认单元格样式:

image.png238284911.png
这是因为Excel为了性能,不会记录每个单元格的样式字体等信息,否则庞大的单元格数量会导致整个文件运行展示性能很差,因此没有单独做单元格设置的单元格所展现的样式就直接沿用默认的样式了,整个工作簿需要记录的只有做了单独处理的单元格。GcExcel的策略和Excel一致
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-8 12:26:11
6#
您好,请问楼主的问题是否得到解决,如果仍然存在问题,欢迎继续跟帖询问
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-16 11:31:59
7#
您好,由于您长时间未回帖,本贴就先作结帖处理了,后续如果有其他新的问题,欢迎继续发新帖询问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部