java导出excel设置某列为字符

java导出excel设置某列为字符,第1张

java导出excel设置某列为字符

方法/步骤

Java中使用poi的jar包实现,导出excel模板,当字段中函数像身份z号这样很长的字段时,由于数据格式默认为常规,就会导致显示错乱,所以需要重新设置为文本,就不会导致出错

java 读取excel并设置各列数据的类型,如下信息:现在需读取的数据第一列为String,第二、三列均为是longList<Info>list = new ArrayList

构建Workbook对象, 只读Workbook对象//直接从本地文件创建Workbook //从输入流创建Workbook

仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。

一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。因为在Excel文件中只有字符串和数字。如果Cell的Type为CELL_TYPE_NUMERIC时,还需要进一步判断该Cell的数据格式,因为它有可能是Date类型,在Excel中的Date类型也是以Double类型的数字存储的

我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。

import

org.apache.poi.hssf.usermodel.HSSFCell

import

org.apache.poi.hssf.usermodel.HSSFCellStyle

import

org.apache.poi.hssf.usermodel.HSSFRow

import

org.apache.poi.hssf.usermodel.HSSFSheet

import

org.apache.poi.hssf.usermodel.HSSFWorkbook

import

org.apache.poi.poifs.filesystem.POIFSFileSystem

/**

*

@param

inputFile

输入模板文件路径

*

@param

outputFile

输入文件存放于服务器路径

*

@param

dataList

待导出数据

*

@throws

Exception

*

@roseuid:

*/

public

void

exportExcelFile(String

inputFile,

String

outputFile,

List

dataList)

throws

Exception

{

//用模板文件构造poi

POIFSFileSystem

fs

=

new

POIFSFileSystem(new

FileInputStream(inputFile))

//创建模板工作表

HSSFWorkbook

templatewb

=

new

HSSFWorkbook(fs)

//直接取模板第一个sheet对象

HSSFSheet

templateSheet

=

templatewb.getSheetAt(1)

//得到模板的第一个sheet的第一行对象

为了得到模板样式

HSSFRow

templateRow

=

templateSheet.getRow(0)

//HSSFSheet

timplateSheet

=

templatewb.getSheetAt(1)

//取得Excel文件的总列数

int

columns

=

templateSheet.getRow((short)

0).getPhysicalNumberOfCells()

Debug.println("columns

is

:

"

+

columns)

//创建样式数组

HSSFCellStyle

styleArray[]

=

new

HSSFCellStyle[columns]

//一次性创建所有列的样式放在数组里

for

(int

s

=

0

s

<

columns

s++)

{

//得到数组实例

styleArray[s]

=

templatewb.createCellStyle()

}

//循环对每一个单元格进行赋值

//定位行

for

(int

rowId

=

1

rowId

<

dataList.size()

rowId++)

{

//依次取第rowId行数据

每一个数据是valueList

List

valueList

=

(List)

dataList.get(rowId

-

1)

//定位列

for

(int

columnId

=

0

columnId

<

columns

columnId++)

{

//依次取出对应与colunmId列的值

//每一个单元格的值

String

dataValue

=

(String)

valueList.get(columnId)

//取出colunmId列的的style

//模板每一列的样式

HSSFCellStyle

style

=

styleArray[columnId]

//取模板第colunmId列的单元格对象

//模板单元格对象

HSSFCell

templateCell

=

templateRow.getCell((short)

columnId)

//创建一个新的rowId行

行对象

//新建的行对象

HSSFRow

hssfRow

=

templateSheet.createRow(rowId)

//创建新的rowId行

columnId列

单元格对象

//新建的单元格对象

HSSFCell

cell

=

hssfRow.createCell((short)

columnId)

//如果对应的模板单元格

样式为非锁定

if

(templateCell.getCellStyle().getLocked()

==

false)

{

//设置此列style为非锁定

style.setLocked(false)

//设置到新的单元格上

cell.setCellStyle(style)

}

//否则样式为锁定

else

{

//设置此列style为锁定

style.setLocked(true)

//设置到新单元格上

cell.setCellStyle(style)

}

//设置编码

cell.setEncoding(HSSFCell.ENCODING_UTF_16)

//Debug.println("dataValue

:

"

+

dataValue)

//设置值

统一为String

cell.setCellValue(dataValue)

}

}

//设置输入流

FileOutputStream

fOut

=

new

FileOutputStream(outputFile)

//将模板的内容写到输出文件上

templatewb.write(fOut)

fOut.flush()

// *** 作结束,关闭文件

fOut.close()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7869953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存