查看源码 发现 cell.cpp中comment()方法中把comment的size重新初始化为200*100,需要自己判断comment的size是否为0,为0才需要初始化。
这时重新编译源码,调用后发现虽然size成功设置了,但excel打开comment大小还是没改变。
通过vim 打开excel ,发现excel由几个xml组成,找到vmlDrawing1.vml并打开。你会找到你之前设置的comment的大小如:width:800pt;height:800pt ,那说明excel中确实设置了,只不过并没有起作用。
这时我在Windows上自己新建了一个excel,然后手动调整了批注框的大小,然后通过vim 打开该excel,将里面的所有xml与之前程序生成的excel的xml进行对比,总结出的结论是comment的大小与vmlDrawing1.vml下的标签“x:Anchor”中的后四位数字有关,具体关系还需要进一步验证
另一种解决方案:修改comment大小主要是为了让comment中的内容显示完整,那么window的excel软件中对批注框有个设置“自适应文本大小”,对应的xml就是在vmlDrawing1.vml的标签v:textbox中增加mso-fit-shape-to-text:t,即:”style=”mso-direction-alt:auto;auto;mso-fit-shape-to-text:t”。不知过这个在linux的excel软件中不起作用。源码修改就是xlsx_producer.cpp中“write_attribute(“style”, “mso-direction-alt:auto”);”修改为“write_attribute(“style”, “mso-direction-alt:auto;auto;mso-fit-shape-to-text:t”);”即默认自适应
-如果linux平台打开excel,那还是需要弄懂 x:Anchor里面的内容