Tag: apache poi

当使用Apache-POI库获取单元格内容时,我得到“无法从文本单元格中获取数值”,反之亦然。 我如何解决它?

我意识到这个问题有点令人困惑,但我不知道怎么说它。 无论如何,这是原始代码: private void readFile(String excelFileName) throws FileNotFoundException, IOException { XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(excelFileName)); if (workbook.getNumberOfSheets() > 1){ System.out.println(“Please make sure there is only one sheet in the excel workbook.”); } XSSFSheet sheet = workbook.getSheetAt(0); int numOfPhysRows = sheet.getPhysicalNumberOfRows(); XSSFRow row; XSSFCell num; for(int y = 1;y < numOfPhysRows;y++){ //start at the 2nd […]

Apache POI – 如何使用选项保护工作表?

我正在使用Apache POI生成Excel文件(2007)。 我想要的是保护工作表,但启用了一些选项。 通过选项我的意思是当您尝试保护Excel应用程序中的工作表时(在“允许此工作表的所有用户为:”标签下)的复选框列表。 具体来说,我想启用“选择锁定/未锁定的单元格”,“格式列”,“排序”和“允许自动过滤”。 非常感谢你! :d

Java:使用apache POI如何将ms word文件转换为pdf?

通过使用apache POI如何将ms word文件转换为pdf ? 我使用以下代码,但它没有工作给出错误,我想我正在导入错误的类? import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import org.apache.poi.hslf.record.Document; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class TestCon { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub POIFSFileSystem fs = null; Document document = new Document(); try […]

来自hex代码的Apache POI XSSFColor

我想以hex代码将单元格的前景色设置为给定的颜色。 例如,当我尝试将其设置为红色时: style.setFillForegroundColor(new XSSFColor(Color.decode(“#FF0000”)).getIndexed()); 无论我在解码函数的参数中设置了什么hex值,getIndexed函数将始终返回黑色。 难道我可能做错了吗? 我认为这是一个错误,但我不确定……

使用apache poi使列只读

我正在使用apache-poi生成excel文件。 我需要将第4列设为只读,其余2列将由用户编辑。 我正在使用XSSFCellStyle实现这一点,但它不适合我。 整个代码是: Map styles = new HashMap(); XSSFCellStyle style5 = wb.createCellStyle(); XSSFFont headerFont = wb.createFont(); headerFont.setBold(true); style5.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); style5.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); style5.setFont(headerFont); style5.setLocked(true); // this line does not get executed. styles.put(“header”, style5);

如何使用Apache POI将HSSFWorkbook转换为XSSFWorkbook?

如何转换 org.apache.poi.hssf.usermodel.HSSFWorkbook 至 org.apache.poi.xssf.usermodel.XSSFWorkbook 在Apache POI? 环境 : JSE1.6 JBossAS 4.3.2 POI 3.7

Excel单元格样式问题

我使用下面的代码从XLSX文件中获取日期值。 对于某些xlsx文件,这是完全正常的。 但它没有给出xlsx文件中的确切日期格式。 此问题适用于某些文件。 例如; 我有这样的日期21/01/2016 (dd/mm/yyyy)但阅读后,它给出的日期为01/21/16(mm/dd/yy) 有没有其他方法可以获得cellstyle? 是xlsx文件的问题?? String dateFmt = cell.getCellStyle().getDataFormatString(); if (DateUtil.isCellDateFormatted(cell)) { double val = cell.getNumericCellValue(); Date date = DateUtil.getJavaDate(val); String dateFmt = cell.getCellStyle().getDataFormatString(); System.out.println(“dateFmt “+dateFmt); value = new CellDateFormatter(dateFmt).format(date); System.out.println(“Date “+value); }

使用页码指示为XWPFDocument创建目录

我实际上是使用Apache POI生成Word文档,我需要自动创建一个引用段落的目录(TOC)及其页面指示。 这是我正在使用的代码(我省略了前置条件和内部方法的主体): XWPFDocument doc = new XWPFDocument(OPCPackage.openOrCreate(new File(document))); String strStyleId = “Index Style”; addCustomHeadingStyle(doc, strStyleId, 1); XWPFParagraph documentControlHeading = doc.createParagraph(); changeText(documentControlHeading, “First try”); documentControlHeading.setAlignment(ParagraphAlignment.LEFT); documentControlHeading.setPageBreak(true); documentControlHeading.setStyle(strStyleId); XWPFParagraph documentControlHeading1 = doc.createParagraph(); changeText(documentControlHeading1, “Second try”); documentControlHeading1.setAlignment(ParagraphAlignment.LEFT); documentControlHeading1.setPageBreak(true); documentControlHeading1.setStyle(strStyleId); doc.createTOC(); 当我打开生成的文档时,我得到了这个结果(见蓝色方块): 在左侧部分,我可以看到生成的TOC。 到现在为止还挺好。 但是,在文档的正文中,我只能看到一个静态文本“目录”,根本没有任何指示(既没有段落也没有页面)。 我甚至无法与它互动。 如果我点击菜单条目“目录”(左上角的红色方块),则会生成我想要的“真实”内容表(当然,请按照箭头…)。 我的问题是: 如何从代码中获得第二个结果(红色TOC)? 非常感谢。 旁注:我甚至试过把doc.enforceUpdateFields(); 在doc.createTOC(); 但是,TOC的每一个参考都会以这种方式消失。 @Sucy,我添加了你要求的方法。 但不知道你是否能发现它们有用: /* * Adds […]

通过Apache POI读取大型Excel文件(xlsx)时出错

我试图通过Apache POI读取大型excel文件xlsx,比如40-50 MB。 我失去了内存exception。 当前堆内存为3GB。 我可以毫无问题地阅读较小的excel文件。 我需要一种方法来读取大型excel文件,然后通过Spring excel视图将它们作为响应返回。 public class FetchExcel extends AbstractView { @Override protected void renderMergedOutputModel( Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { String fileName = “SomeExcel.xlsx”; response.setContentType(“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”); OPCPackage pkg = OPCPackage.open(“/someDir/SomeExcel.xlsx”); XSSFWorkbook workbook = new XSSFWorkbook(pkg); ServletOutputStream respOut = response.getOutputStream(); pkg.close(); workbook.write(respOut); respOut.flush(); workbook = null; response.setHeader(“Content-disposition”, “attachment;filename=\”” +fileName+ “\””); […]

Apache POI的基本Excel货币格式

我能够将单元格格式化为Dates,但我无法将单元格格式化为货币……任何人都有一个如何创建样式以使其工作的示例? 我下面的代码显示了我正在创建的样式… styleDateFormat就像一个冠军,而styleCurrencyFormat对单元格没有影响。 private HSSFWorkbook wb; private HSSFCellStyle styleDateFormat = null; private HSSFCellStyle styleCurrencyFormat = null; …… public CouponicsReportBean(){ wb = new HSSFWorkbook(); InitializeFonts(); } public void InitializeFonts() { styleDateFormat = wb.createCellStyle(); styleDateFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat(“m/d/yy”)); styleCurrencyFormat = wb.createCellStyle(); styleCurrencyFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat(“$#,##0.00”)); }