Issue 351 - truncate exports to Excel at 256 columns (limitation of Excel format)

git-svn-id: http://google-refine.googlecode.com/svn/trunk@2094 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
Tom Morris 2011-06-07 23:55:00 +00:00
parent 6a14049652
commit 51c898d602

View File

@ -75,8 +75,12 @@ public class XlsExporter implements StreamExporter {
int cellCount = 0; int cellCount = 0;
for (Column column : project.columnModel.columns) { for (Column column : project.columnModel.columns) {
org.apache.poi.ss.usermodel.Cell c = r.createCell(cellCount++); if (cellCount++ > 255) {
c.setCellValue(column.getName()); // TODO: Warn user about truncated data
} else {
org.apache.poi.ss.usermodel.Cell c = r.createCell(cellCount);
c.setCellValue(column.getName());
}
} }
} }
@ -101,43 +105,48 @@ public class XlsExporter implements StreamExporter {
// nothing to do // nothing to do
} }
@Override
public boolean visit(Project project, int rowIndex, Row row) { public boolean visit(Project project, int rowIndex, Row row) {
org.apache.poi.ss.usermodel.Row r = sheet.createRow(rowCount++); org.apache.poi.ss.usermodel.Row r = sheet.createRow(rowCount++);
int cellCount = 0; int cellCount = 0;
for (Column column : project.columnModel.columns) { for (Column column : project.columnModel.columns) {
org.apache.poi.ss.usermodel.Cell c = r.createCell(cellCount++); if (cellCount++ > 255) {
// TODO: Warn user about truncated data
int cellIndex = column.getCellIndex(); } else {
if (cellIndex < row.cells.size()) { org.apache.poi.ss.usermodel.Cell c = r.createCell(cellCount);
Cell cell = row.cells.get(cellIndex);
if (cell != null) { int cellIndex = column.getCellIndex();
if (cell.recon != null && cell.recon.match != null) { if (cellIndex < row.cells.size()) {
c.setCellValue(cell.recon.match.name); Cell cell = row.cells.get(cellIndex);
if (cell != null) {
HSSFHyperlink hl = new HSSFHyperlink(HSSFHyperlink.LINK_URL); if (cell.recon != null && cell.recon.match != null) {
hl.setLabel(cell.recon.match.name); c.setCellValue(cell.recon.match.name);
hl.setAddress("http://www.freebase.com/view" + cell.recon.match.id);
HSSFHyperlink hl = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
c.setHyperlink(hl); hl.setLabel(cell.recon.match.name);
} else if (cell.value != null) { hl.setAddress("http://www.freebase.com/view" + cell.recon.match.id);
Object v = cell.value;
c.setHyperlink(hl);
if (v instanceof Number) { } else if (cell.value != null) {
c.setCellValue(((Number) v).doubleValue()); Object v = cell.value;
} else if (v instanceof Boolean) {
c.setCellValue(((Boolean) v).booleanValue()); if (v instanceof Number) {
} else if (v instanceof Date) { c.setCellValue(((Number) v).doubleValue());
c.setCellValue((Date) v); } else if (v instanceof Boolean) {
} else if (v instanceof Calendar) { c.setCellValue(((Boolean) v).booleanValue());
c.setCellValue((Calendar) v); } else if (v instanceof Date) {
} else if (v instanceof String) { c.setCellValue((Date) v);
String s = (String) v; } else if (v instanceof Calendar) {
if (s.length() > 32767) { c.setCellValue((Calendar) v);
// The maximum length of cell contents (text) is 32,767 characters } else if (v instanceof String) {
s = s.substring(0, 32767); String s = (String) v;
if (s.length() > 32767) {
// The maximum length of cell contents (text) is 32,767 characters
s = s.substring(0, 32767);
}
c.setCellValue(s);
} }
c.setCellValue(s);
} }
} }
} }