我正在使用apache poi 3.7,我需要将边框放到一系列单元格或合并区域.
当工作表和工作簿类型为XSSF时,如何将边框应用于合并区域.在HSSF类型中,我使用RegionUtil-/HSSFRegionutil,但是如果在XSSF类型中使用第一个对象(Regionutil),则它不起作用并将黑色背景颜色放入单元格范围.
Regionutil通常使用CellRangeAddress,我找不到有关此问题的信息.我不知道CellRangeAddres是否会导致这种情况.
我有一个java程序,它将标题和数据作为输入并生成一个excel文件.
但是,有时当标题值很长并且列数更多时,我的Excel工作表往往会不必要地变宽.
由于标题,我将向下滚动到右边以查看尾端列的内容.
有没有办法可以解决这个问题,如果单元格中的内容比较大,然后说值x,则自动换行并自动调整行高并修改列宽.
我正在寻找的粗略算法是:
if(content.size is more then 50 chars){
- apply auto wrap with centred text
- adjust the row height accordingly
- adjust all the cells in the column accordingly
}
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我在网上提供的一些例子.
谢谢阅读!
我尝试使用setFillForegroundColor和setFillBackgroundColor来更改excel文件的单元格颜色.
但是,我失败了,我真的不知道问题是什么.我用Google搜索了好几个小时,仍然无法找到正确的方法来设置颜色.
以下是我写的代码:
import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TestColor {
public static void main(String[] args) {
File f = new File("test.xlsx");
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFRow row = sheet.createRow(0);
XSSFCell cell = row.createCell(0);
cell.setCellValue("no blue");
// set the color of the cell
XSSFCellStyle style = wb.createCellStyle();
XSSFColor myColor = new XSSFColor(Color.BLUE);
style.setFillForegroundColor(myColor);
style.setFillBackgroundColor(myColor);
cell.setCellStyle(style); // this command seems to fail …Run Code Online (Sandbox Code Playgroud) 有没有办法确定细胞是否是约会?我知道style.getDataFormatString(),但这对我没有帮助,因为我无法确定是否格式化是否为日期.
我使用以下代码:
File file = new File("abc.xlsx");
InputStream st = new FileInputStream(file);
XSSFWorkbook wb = new XSSFWorkbook(st);
Run Code Online (Sandbox Code Playgroud)
xlsx文件本身有25,000行,每行包含500列内容.在调试过程中,我看到我创建XSSFWorkbook的第三行,需要花费大量时间(1小时!)才能完成此语句.
有没有更好的方法来访问原始xlsx文件的值?
当我正在阅读Excel文件(.xls格式)时,我不断得到一个异常:
java.lang.IllegalArgumentException: Your Input Stream was neither an OLE 2 stream, nor an OOXML stream.
Run Code Online (Sandbox Code Playgroud)
我Go-ogled并发现如果输入流不支持重置或标记,我应该用它包装pushbackStream.我的输入流未支持mark\reset.
所以使用pushbackStream是唯一的选择吗?如何使用它?什么是使用它?
谢谢
我需要在我的项目中将csv转换为xls/xlsx?我怎样才能做到这一点?有人可以给我发一些例子吗?我想用Apache poi做这件事.我还需要从java端创建一个单元格.
我正在使用POI 3.12-beta1:
<!-- Apache POI (for Excel) -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.12-beta1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.12-beta1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个计算的数据透视表列,其定义为:= 'Ended' / 'Generated' * 100.
我继续在Excel中手动编辑工作表以使其工作,当我将*.xlsx文件转换为ZIP目录并查看它时,我发现以下代码\xl\pivotCache\pivotCacheDefinition1.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pivotCacheDefinition xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1" refreshOnLoad="1" refreshedBy="vyasrav" refreshedDate="42110.580247453705" createdVersion="3" refreshedVersion="3" minRefreshableVersion="3" recordCount="352">
<cacheSource type="worksheet">
<worksheetSource ref="A1:O353" sheet="Data"/>
</cacheSource>
<cacheFields count="16">
<!-- OMITTED -->
<cacheField name="Avg Pct Processed" numFmtId="0" formula="'Ended' / 'Generated' * 100" databaseField="0"/>
</cacheFields>
</pivotCacheDefinition>
Run Code Online (Sandbox Code Playgroud)
所以我回到了我的java程序并添加了以下代码来自动生成它,但它没有注册数据列"15"而且我收到了IndexOutOfBounds错误.
// Add pivot (pivot …Run Code Online (Sandbox Code Playgroud) 我正在尝试从资产文件夹中读取xlsx文件.我收到以下例外,
05-16 10:12:05.613:E/AndroidRuntime(2915):致命异常:主05-16 10:12:05.613:E/AndroidRuntime(2915):java.lang.VerifyError:org/apache/poi/xssf /的usermodel/XSSFWorkbook
在此例外之前,我收到了一些警告,如,
找不到方法org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument $ Factory.parse,从方法org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead引用
VFY:无法解决异常类3612(Lorg/apache/xmlbeans/XmlException;)
我在我的应用程序中添加了poi 3.12库,库截图如下,

我在Order and Export中检查了poi-3.12和poi-ooxml-3.12 jar文件,截图如下,

我使用下面的代码,
InputStream is = context.getAssets().open("sample.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(is);
XSSFSheet sheet = workbook.getSheetAt(0);
Cell cell = sheet.getRow(0).getCell(0);
String value = cell.getStringCellValue() + "";
Run Code Online (Sandbox Code Playgroud)
我想读取和写入.XLSX和.XLS文件.如何解决这个问题?
提前致谢.
我试图使用Java和Apache POI将简单的VLookup公式放在我的".xlsx"文件中.
这个公式有外部参考,这对我不起作用.
所以为了给你更多的细节,我正在使用poi和poi-ooxml版本3.13和excel 2007.
我将这个公式放入单元格(其中cell是一个Cell):
cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("StringContainingFormula");
Run Code Online (Sandbox Code Playgroud)
然后评估公式,我尝试了三种不同的方法,但没有运气.(wb是XSSFWorkbook).
1
FormulaEvaluator mainWorkbookEvaluator = wb.getCreationHelper().createFormulaEvaluator();
Map<String,FormulaEvaluator> workbooks = new HashMap<String, FormulaEvaluator>();
workbooks.put("SpreadsheetName.xlsx", mainWorkbookEvaluator);
mainWorkbookEvaluator.setupReferencedWorkbooks(workbooks);
mainWorkbookEvaluator.evaluateAll();
Run Code Online (Sandbox Code Playgroud)
2
XSSFEvaluationWorkbook.create(wb);
Workbook nwb = wb;
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
for (Sheet sheet : nwb) {
for (Row r : sheet) {
for (Cell c : r) {
if (c.getCellType() == Cell.CELL_TYPE_FORMULA) {
try {
//evaluator.evaluateFormulaCell(c);
evaluator.evaluate(c);
} catch (Exception e) {
System.out.println("Error occured in 'EvaluateFormulas' : " + e);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
3 …
xssf ×10
java ×9
apache-poi ×8
excel ×3
poi-hssf ×3
android ×1
optimization ×1
pivot-table ×1
spring ×1
spring-mvc ×1
xls ×1