如何获取tablecell里面的二进制文件
我们的模板里面有两个table框, 用户会通过一些button事件把一些带格式的tx二进制文件自动导入到框里面, 导入的方式如下_textControl.Selection.Load(content, BinaryStreamType.InternalFormat);
content是一个byte数组.
现在有一个问题, 怎么把这个框里面的二进制文件再取出来?
我们现在只能取普通的text文本, 这样就没法带格式了.
this.textControl1.Selection.Save(StreamType.InternalFormat); this.textControl1.Selection.Save(StreamType.InternalFormat); 这个方法差不多可以实现我要的功能, 但是还是有点小问题,保存的时候会把table框也保存出来, 我尝试了各种办法, 都没办法去掉.public byte[] GetFomattedTableCellValue(int tableId)
{
Table table = _textControl.Tables.GetItem(tableId);
if (table == null) return null;
TableCell tableCell = table.Cells.GetItem(1, 1);
if (tableCell != null)
{
_textControl.Selection.Start = tableCell.Start;
_textControl.Selection.Length = tableCell.Text.Trim().Length ;
byte[] bytes = null;
//_textControl.Selection.Save(out bytes,BinaryStreamType.InternalUnicodeFormat);
_textControl.Selection.Save(StreamType.InternalUnicodeFormat);
//_textControl.Save(StreamType.InternalUnicodeFormat);
return bytes;
}
return null;
} 应该是selection的问题,你试试调整一下start和length
_textControl.Selection.Start = tableCell.Start + 1;
_textControl.Selection.Length = tableCell.Text.Trim().Length - 1 ; 本帖最后由 mindrayguowei 于 2016-10-20 19:27 编辑
还是有问题
_textControl.Selection.Length = tableCell.Text.Trim().Length - 1 ;
这样会导致文本复制不全, 应该是trim的问题, 但是去掉trim也有问题.
有时候不会导入框, 有时候又会导入框.
这个究竟是怎么判断的? 和什么有关? Selection 就是控制Start和Lenth。是不是选中了Cell也是看长度是多少。
把Trim去掉,试试这个
this.textControl1.Selection.Start = cell.Start - 1;
this.textControl1.Selection.Length = cell.Length;
页:
[1]