Tag: apache poi

使用Apache POI将电话号码存储在Microsoft Excel XSSF中

我有一个电话号码作为string存储在Excel中,Excel文件已成功创build,数据没有错误,但每个电话号码旁边都有一个“存储为文本的数字”错误。 我已经在网上阅读过,我应该使用excel或自定义000-000-0000格式附带的特殊电话号码格式。 我可以设置这些使用Excel程序,但不是从我的Java代码。 我已经查找周围的setCellType和DataFormat的信息,但我认为CellType必须是string,我不明白如何使用DataFormat除了date之外的任何东西。 我也看了DataFormatter,但我不明白如何使用它来存储数据。 它看起来只是为了帮助阅读数据。 http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DataFormatter.html 我怎样才能做到以下任一情况? 1)将单元格标记为“忽略错误”,忽略“存储为文本的数字”错误 2)利用内置的Excel单元格格式“Special> Phone Number” 对于1)看起来有一个标志,通过保存和closures文件持续存在,我不知道如何编辑或查看与POI。 有一个关于它的文章: excel文档的页面669和670包含FeatFormulaErr2,这是FeatRecord共享function,理论上允许您存储的事实,即“数字作为文本”应忽略单元格范围 我们还得到了两个testing文件,一个是警告,一个是closures的 – 46136-NoWarnings.xls和46136-WithWarnings.xls。 但是我没有创build它们! Nick http://mail-archives.apache.org/mod_mbox/poi-user/201003.mbox/%3C27823222.post@talk.nabble.com%3E 看来这可以在VBA中完成cell.Errors.Item(xlNumberAsText).Ignore = True但似乎没有POI

如何阅读在apache poi中的单元格中的每个文本的字体颜色3.9

[单元格中的文本] ABC(粉红色) DEF(黑色) GHI(红色) 我必须检查像上面的单元格中的文本的字体颜色。 (对不起,我不能上传图像)第一排的颜色是粉红色的。 下一排的颜色是黑色和红色。 正如你看到的,我不能使用getCellStyle()方法,因为单元格有3个字体属性。 我input如下的源代码。 XSSFCell cell = row.getCell(0); XSSFRichTextString value = cell.getRichStringCellValue(); String[] info = value.getString().split("\n"); for(int i = 0; i < info.length; i++) { int index = value.getString().indexOf(info); System.out.println(value.getFontAtIndex(index).getColor()); } 但是,我没有得到正确的结果。 我想知道如何获取每个文本的字体信息。 请告诉我你的好build议。 非常感谢。 祝你有美好的一天!

我们能否以编程方式按照某个列值在Excel表格中按字母顺序sorting条目

我已经编程创build了一个Excel工作表,其中有许多使用Apache POI的条目行。 是否可以通过使用任何API以编程方式根据特定列中的值对Excel表中的条目( 按字母顺序sorting )进行sorting ? 我需要在Android应用程序中实现这个。 到目前为止,我已经观察到,我们可以在Excel工作表中手动执行此操作,但是是否可以通过编程方式执行此操作? 任何关于任何.jar文件(不一定是Apache POI )的build议将不胜感激。

使用Apache POI进行条件格式化时的自定义背景色

我有一个XSSF工作簿,我想定义一个自定义背景颜色的一组单元格中定义的条件格式,但问题是PatternFormatting类中的setFillBackgroundColor()方法只接受types短参数,而不是像XSSFColor这个: PatternFormatting fill = rule1.createPatternFormatting(); fill.setFillBackgroundColor(new XSSFColor(new java.awt.Color(80, 80, 100)); fill.setFillPattern(PatternFormatting.SOLID_FOREGROUND); 我可以做fill.setFillBackgroundColor(IndexedColors.RED.index) ,但我想定义一个自定义的颜色。 我怎样才能做到这一点?。

有效的方法来读取XLSX文件并将数据存储在Grails中

我需要阅读一个XLSX文件,其中包含5张大约5万行,在Grails中大约7MB。 我需要逐页读取文件,并需要将每行存储到数据库表中。 但我越来越 Java heap space. Stacktrace follows: Message: Executing action [abx] of controller [abc.xyz.controller] caused exception: Runtime error executing action Line | Method ->> 198 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter 我试图通过设置“GRAILS_OPTS”来增加堆空间 GRAILS_OPTS=-XX:MaxPermSize=128m -XX:PermSize=128m -Xms1024m -Xmx1024m -XX:-UseGCOverheadLimit 但没有工作。 我遇到了这个问题 如何阅读大小> 40MB的XLSX文件,但没有适当的实现可在这里。 我尝试使用SAX从XLSX文件中读取XML,方法是从如何使用doc http://poi.apache.org/spreadsheet/how-to.html Grails控制器: // // OPCPackage pkg = OPCPackage.open(filename); XSSFReader r = new XSSFReader( pkg […]

Apache poi excel颜色单元格问题

我正在使用Apache poi来编写excel数据。 String colour = "A2C465"; byte[] ret = new byte[3]; for(int i=0; i<3; i++){ ret[i] = (byte)hexToInt(colour.charAt(i * 2), colour.charAt(i*2+1)); } public int hexToInt(char a, char b){ int x = a < 65 ? a-48 : a-55; int y = b < 65 ? b-48 : b-55; return x*16+y; } 循环迭代后,我得到ret = {-94,-60,101}。但实际的RGB代码是{162,196,101}(因为从int转换为字节)。因为这个颜色在excel表单中变得不同。你可以帮助我呢?

不同ColdFusion版本的cfspreadsheet单元格数据修剪问题

采取以下代码… <cfspreadsheet action="read" src="#z.xlsfile#" query="data" headerrow="1" excludeHeaderRow="true" /> <cfoutput> <!— Lets replace spaces with $ so they are easy to see —> <cfloop query="data"> #data["Doc Type"][data.currentrow]# – #replace(data["Doc Type"][data.currentrow],' ','$','all')#<br> #data["Doc No"][data.currentrow]# – #replace(data["Doc No"][data.currentrow],' ','$','all')#<br> #data["Doc Rev"][data.currentrow]# – #replace(data["Doc Rev"][data.currentrow],' ','$','all')#<br> #data["File Name"][data.currentrow]# – #replace(data["File Name"][data.currentrow],' ','$','all')#<br> <hr> </cfloop> </cfoutput> <cfabort> 正在读取的XLS文件具有包含前导和尾随空格的单元数据。 在一台ColdFusion服务器上,输出结果不显示空格,就像<cfspreadsheet>自动修剪所有数据一样。 在另一台服务器上没有。 […]

命名一个单元与POI

在正常的excel中,可以使用工作表左上angular的小文本框命名单元格(或范围),例如,可以将单元格从H13命名为“total”。 有没有办法通过Apache POI来做到这一点?

有没有一种工具可以代替来回传递Excel文件并合并它们?

一些遗留软件依赖于下载多个Excel文件,合并内容,将其发回,远离某些人进行一些更改,然后将修改后的Excel文件发送回去,第二天多个Excel文件将再次下载,与此文件合并。 有没有一些工具(最好用于Java或可以从Java程序中使用),这将允许我replace这个遗留的代码,因为维护/扩展它只是自我焚烧略好一点? 我应该补充一点,我们使用Excel而不是数据库的原因是一些报告只能导出为Excel,而在我们的结尾,一些员工对使用Excel公式感到满意。 所以我们需要一些他们可以用Excel来编辑的东西,但是我们可以通过其他方式来完成上述任务。 更新:这些文件不包含图像,只是普通的Excel数据和公式。 我要离开“发送”通用,因为这可以很容易地改变。 这可能是通过FTP,通过电子邮件,通过networkingforms等,并没有真正改变过程的性质。

如何正确格式化date单元格并使用Apache POI 3.7填充内容

背景: 我需要导出一个包含date格式数据的列的电子表格文档。 我目前正在设置工作簿样式,如下所示: … dateTimeStyle = workbook.createCellStyle(); //dateTimeStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); dateTimeStyle.setDataFormat((short)0x16); … 并将数据插入单元格/设置单元格的格式,如下所示: … if (Date.class.isAssignableFrom(o.getClass())) { Calendar cal = Calendar.getInstance(); cal.setTime((Date) o); cell.setCellStyle(dateTimeStyle); cell.setCellValue(cal); } … 注意:根据BuiltinFormats文档( http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html)0x16是指我试图实现的date格式。 我遇到的问题是,当我在Microsoft Office Excel 2007中打开导出的文档时,右键单击单元格,然后select“ 格式化单元格…” ,将选定的单元格显示为具有dd / mm / yyyy自定义格式。hh:毫米 而且,VLOOKUP操作在列上不起作用(我可以承认,这样做是错误的): 我有一种感觉,这是由于误解Excel如何存储和格式化内容,并希望提供任何帮助。 题: 那么,如何正确格式化/填充单元格,以便Microsoft Excel将其视为date和VLOOKUPs工作等? 更新:如果我打开Open Office Calc中生成的文件,并select格式单元格…格式正确显示为date。 开始怀疑,那么,如果这是POI库和Excel 2007的问题… 非常感谢。