如何做镜像别人网站,上海东道设计,网站app在线生成器,个人网站设计html我们在Java应用程序中有一个新要求,即用户可以上传excel文件.excel文件中的一列将使用粗体,斜体,项目符号,彩色文本等格式.我们需要读取此excel文件并将这些值存储在Oracle DB表中.随后,我们还需要提取这些数据,并保留格式并下载到excel工作表中.我们计划将Apache-poi用于相同的…我们在Java应用程序中有一个新要求,即用户可以上传excel文件.excel文件中的一列将使用粗体,斜体,项目符号,彩色文本等格式.我们需要读取此excel文件并将这些值存储在Oracle DB表中.随后,我们还需要提取这些数据,并保留格式并下载到excel工作表中.我们计划将Apache-poi用于相同的功能,但是现在停留在需要将HSSFRichTextString对象转换为要存储到Oracle表的格式的位置.HSSFRichTextString的tostring()方法提供字符串,但是格式丢失.有人可以建议我如何将这个HSSFRichTextString对象转换为Oracle数据类型(最好是clob).解决方法:正确的是,toString()方法将仅返回HSSFRichTextString的未格式化String内容.这是一种从HSSFRichTextString中提取所有其他重要数据以与字符串值一起存储的方法.与my answer to this question非常相似,从HSSFRichTextString中提取富文本格式信息,并将该数据存储在要创建的类FormattingRun中.public class FormattingRun {private int beginIdx;private int length;private short fontIdx;public FormattingRun(int beginIdx, int length, short fontIdx) {this.beginIdx beginIdx;this.length length;this.fontIdx fontIdx;}public int getBegin() { return beginIdx; }public int getLength() { return length; }public short getFontIndex { return fontIdx; }}然后,调用Apache POI方法提取该数据. numFormattingRuns()-返回在HSFFRichTextString中运行的格式化次数. getFontOfFormattingRun(int)-返回出现在字符串中指定位置的短字体索引现在,实际提取数据List formattingRuns new ArrayList();int numFormattingRuns richTextString.numFormattingRuns();for (int fmtIdx 0; fmtIdx numFormattingRuns; fmtIdx){int begin richTextString.getIndexOfFormattingRun(fmtIdx);short fontIndex richTextString.getFontOfFormattingRun(fmtIdx);// Walk the string to determine the length of the formatting run.int length 0;for (int j begin; j richTextString.length(); j){short currFontIndex richTextString.getFontAtIndex(j);if (currFontIndex fontIndex)length;elsebreak;}formattingRuns.add(new FormattingRun(begin, length, fontIndex));}要将这些数据存储在数据库中,首先要认识到HSSFRichTextString和FormattingRun之间存在一对多的关系.因此,在您计划存储富文本字符串数据的任何Oracle表中,都需要与另一个存储格式化运行数据的新表建立外键关系.像这样Table: rich_text_stringrts_id NUMBERcontents VARCHAR2(4000)rts_id是主键,并且Table: rts_formatting_runsrts_id NUMBERrun_id NUMBERrun_pos NUMBERrun_len NUMBERfont_index NUMBER其中(rts_id,run_id)是主键,而rts_id则指向rich_text_string表.使用您喜欢的Java到数据库框架(JDBC,Hibernate等),将String值存储到rich_text_string中的内容中,并将关联的FormattingRun对象数据存储到rt_formatting_runs中.请注意-字体索引仅在工作簿中有效.您还需要存储HSSFWorkbook中的字体信息,以赋予font_index含义.它没有存储为CLOB,但是可以说这种方式存储的数据更有意义.标签java,apache-poi来源 https://codeday.me/bug/20191012/1902926.html