标签: hssf

使用NPOI向Excel文件写入日期的问题

我目前正在使用NPOI根据我的asp.net mvc应用程序中的数据库生成Excel文件.我几乎完成了代码,除了在尝试将日期写入Excel时我一直得到的一个小问题.

在数据库(MS SQL Server)中,我将日期保存为41883,41913等...在C#中我可以使用它转换为DataTime对象

DateTime dt = DateTime.FromOADate(Convert.ToDouble(41883));
Run Code Online (Sandbox Code Playgroud)

我用来写日期到Excel的代码看起来像这样:

var cell = excelRow.CreateCell(columnIndex);
IDataFormat format = workbook.CreateDataFormat();
short dateFormat = format.GetFormat("dd/MM/yyyy");
cell.SetCellValue(DateTime.FromOADate(Convert.ToDouble(dbDateValue)));
ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.DataFormat = dateFormat;
cell.CellStyle = cellStyle;
Run Code Online (Sandbox Code Playgroud)

这只是我的代码示例(正在编写日期的部分).这段代码的问题是只有部分日期单元格实际上被格式化为日期,对于所有其他日程单元格我仍然看到数据库41883,41913等中的值当然我可以选择并应用短日期/从Excel格式化日期(但我不希望如此).

任何人都可以让我知道为什么会出现这样的行为(格式化仅适用于部分单元格)...我甚至尝试使用HSSFDataFormat.GetBuiltinFormat("Date"),但在这种情况下没有格式化单元格.

在此输入图像描述

上面的图片更好地解释了我的问题...当我选择第一列中的第一个单元格时,我看到单元格被格式化为"自定义"...对于所有其他未格式化的值,它是常规.一旦我选择了单元格,我可以将其格式化为Excel中的日期,没有任何问题.这很奇怪,因为对所有日期单元执行相同的代码,但只有一些得到正确的格式...

c# asp.net-mvc excel hssf npoi

11
推荐指数
1
解决办法
5999
查看次数

如何获取给定单元格的(Java Apache POI HSSF)背景颜色?

我有一个现有的excel电子表格,我正在访问并从中读取值,我正在使用Apache POI HSSF.

它初始化如下:

HSSFSheet sheet;
FileInputStream fis = new FileInputStream(this.file);
POIFSFileSystem fs = new POIFSFileSystem(fis);
HSSFWorkbook wb = new HSSFWorkbook(fs);
this.sheet = wb.getSheet(exsheet);
Run Code Online (Sandbox Code Playgroud)

我正在遍历工作表中存在的所有单元格,这将生成一个单元格对象:

HSSFCell cell = (HSSFCell) cells.next();
Run Code Online (Sandbox Code Playgroud)

请熟悉该框架的人解释如何创建一个(HSSFColor)对象来表示工作表中每个单元格的背景颜色.

非常感谢

编辑,更新

要清楚我想知道的是:如何为现有单元格的背景颜色创建/获取HSSFColor对象?

cell.getCellStyle().getFillBackgroundColor(); 
Run Code Online (Sandbox Code Playgroud)

此代码仅返回一个短数字,而不是HSSFColor对象.谢谢你到目前为止的答案.

java hssf poi-hssf apache-poi

10
推荐指数
3
解决办法
5万
查看次数

将图片添加到Excel单元格时,Apache POI-HSSF会扭曲图像大小

我正在使用Apache POI-HSSF将图片添加到单元格中.图像是120x100,但无论我做什么以及如何调整它,Excel电子表格总是显示它跨越多行并将其扭曲到比宽度更大的高度.

如何保持原始尺寸?

我的代码:

InputStream is = new FileInputStream(getImageURL());
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
is.close();

//add a picture shape
CreationHelper helper = wb.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
// Create the drawing patriarch.  This is the top level container for all shapes.
Drawing drawing = sheet1.createDrawingPatriarch();
//set top-left corner of the picture,
//subsequent call of Picture#resize() will operate relative to it

anchor.setAnchorType(0);
anchor.setCol1(1);
anchor.setRow1(1);

Picture pict = drawing.createPicture(anchor, pictureIdx);

//auto-size picture relative to its top-left corner
pict.resize(); …
Run Code Online (Sandbox Code Playgroud)

java excel image hssf apache-poi

8
推荐指数
2
解决办法
8442
查看次数

我应该使用哪个库来编写Linux/Python的XLS?

我喜欢一个很好的原生Python库来编写XLS,但它似乎并不存在.令人高兴的是,Jython确实如此.

所以我想在jexcelapi和Apache HSSF之间做出决定:http ://www.andykhan.com/jexcelapi/tutorial.html#writing http://poi.apache.org/hssf/quick-guide.html

(我不能使用COM自动化,因为我不在Windows上,即使我是,我也买不起Office许可证.)

我最初的想法是POI/HSSF非常彻底,但也非常Java--一切似乎都比它需要的更难.良好的文档,但我的头痛害试图弥合它描述的内容和我需要完成的之间的差距.

jexcepapi似乎有一个更简单,更好(对我来说)的界面,但没有很好的文档或社区.

你会用哪个,为什么?

python java xls hssf jexcelapi

7
推荐指数
1
解决办法
1万
查看次数

Apache POI,同时使用XSSF和HSSF

我有Apache POI项目的问题.

我没有使用XSSF,并HSSF"同一个Java类".我应该下载哪个jar或者我应该将哪些工件添加到maven中?

我要同时处理xls,并xlsx在同一时间的文件.当我得到excel版本错误时,我会将XSSF更改为HSSFHSSF更改为XSSF.

我怎样才能做到这一点?

java apache hssf apache-poi xssf

7
推荐指数
2
解决办法
3万
查看次数

使用Apache POI在电子表格中重新计算公式

我正在尝试使用POI XSSF来评估一些Excel公式.这些值不必保存,我可能需要计算很多公式,所以我试图在同一个单元格中完成所有这些.

问题是即使在我重新计算之后,单元格值似乎仍然卡在输入的第一个公式上

FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
XSSFCell formulaCell = row.createCell(6);
formulaCell.setCellFormula("Date(2011,10,6)");
CellValue cellValue = evaluator.evaluate(formulaCell);
System.out.println(cellValue.getNumberValue());

formulaCell.setCellFormula("Date(1911,3,4)");
cellValue = evaluator.evaluate(formulaCell);
System.out.println(cellValue.getNumberValue());
Run Code Online (Sandbox Code Playgroud)

这两次输出40822.0 40822.0(excel相当于10/6/2011),而不是重新评估新公式.

java excel hssf apache-poi xssf

4
推荐指数
1
解决办法
6134
查看次数

如何在Java中使用apite poi中的rowiterator?

我尝试在java中使用apache poi读取excel文件,但Eclipse没有编译代码.

public class ReadExcel {

    public static void main(String[] args) throws IOException {

        FileInputStream file = new FileInputStream(new File("C:\\Users\\XXXXXXXXXXXXXXXXal\\042012.xls"));
        HSSFWorkbook wb = new HSSFWorkbook(file);
        HSSFSheet sheet = wb.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.iterator();

        while (rowIterator.hasNext()) {

        Row row = rowIterator().next();      \\ THIS LINE GETS UNDERLINED BY ECLIPSE!!!
         Iterator<Cell> cellIterator = row.cellIterator();
            while(cellIterator.hasNext()) {

                Cell cell = cellIterator.next();

                        System.out.print(cell.getStringCellValue() + "\t\t");

                            }

        }
        file.close();
        FileOutputStream out =
            new FileOutputStream(new File("C:\\test.xls"));
        wb.write(out);
        out.close();
        }


    }
Run Code Online (Sandbox Code Playgroud)

Eclipse始终强调Row row = rowIterator().next();行.我不知道为什么?我怎样才能改进它?

java row hssf apache-poi

4
推荐指数
3
解决办法
3万
查看次数

Apache-POI:单元格背景颜色不起作用

我正在尝试使用CellStylesfor 来配置用于格式化的泛型.HSSFCellsApache-POI 3.11

这是代码的可运行示例.正确应用粗体和边框格式.问题在于背景和前景颜色.

我有什么不对的任何线索?

public class TestSO {

private final static short 
        MY_LIGHT_BLUE=100,
        MY_DARK_BLUE=101,
        MY_BLACK=102,
        MY_WHITE=103;

public static void main(String[]args) throws Exception{
    HSSFWorkbook workbook = new HSSFWorkbook();
    setPallete( workbook.getCustomPalette() );

    HSSFFont fontNormal = workbook.createFont();
    fontNormal.setFontHeightInPoints((short)11);
    fontNormal.setFontName("Calibri");
    HSSFFont fontBold = workbook.createFont();
    fontBold.setFontHeightInPoints((short)11);
    fontBold.setFontName("Calibri");
    fontBold.setBold(true);


    HSSFCellStyle titleStyle = workbook.createCellStyle();
    titleStyle.setFillBackgroundColor(MY_DARK_BLUE);
    titleStyle.setFillForegroundColor(MY_WHITE);
    titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    titleStyle.setFont(fontBold);
    setTopBotBorder(titleStyle);

    HSSFCellStyle fpStyle = workbook.createCellStyle();
    fpStyle.setFillBackgroundColor(MY_LIGHT_BLUE);
    fpStyle.setFillForegroundColor(MY_BLACK);
    fpStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    fpStyle.setFont(fontNormal);
    setTopBotBorder(fpStyle);

    HSSFSheet sheet = workbook.createSheet("Leyenda");

    HSSFCell cell;

    cell = sheet.createRow( 1 ).createCell( 1 );
    cell.setCellValue("TitleStyle"); …
Run Code Online (Sandbox Code Playgroud)

java hssf apache-poi

3
推荐指数
1
解决办法
3980
查看次数

标签 统计

hssf ×8

java ×7

apache-poi ×6

excel ×3

xssf ×2

apache ×1

asp.net-mvc ×1

c# ×1

image ×1

jexcelapi ×1

npoi ×1

poi-hssf ×1

python ×1

row ×1

xls ×1