poi怎么用
如何利用poi对excel里的某一列的宽度进行设定:
EXCEL的行高度和列宽度单位是不一样的。
1,EXCEL列高度的单位是磅,Apache POI的行高度单位是缇(twip):
1英寸=72磅=25.4毫米=1440缇
1磅=0.353毫米=20缇
POI中的行高=Excel的行高度*20
Excel的行高度=POI中的行高/20
这里顺便把像素的换行方法说一下:
DPI = 1英寸内可显示的像素点个数。通常电脑屏幕是96DPI, IPhone4s的屏幕是326DPI, 普通激光黑白打印机是400DPI
要计算POI行高或者Excel的行高,就先把它行转换到英寸,再乘小DPI就可以得到像素
像素 = (磅/72)*DPI
像素= (Excel的行高度/72)*DPI
像素= (POI中的行高/20/72)*DPI
Excel的行高度=像素/DPI*72
POI中的行高=像素/DPI*72*20
例如在电脑屏幕上, Excel默认行高度为13.5, (13.5/72)*96=18像素,而Excel中也确实显示的就是18像素。
2,EXCEL列宽度的单位是字符个数
(2014-08-18备注:关于Excel的宽度计算的详细介绍在这篇文章Excel的宽度怎么算的?)
在excel2003以上的版本中,可以建立一个空白的xls文档并将第一列宽度拉到10。然后在A1单元格中输入1234567890可以看到单元格正好可以容纳这十个字符。一个字符的宽度是通过测量1234567890这十个字符在默认字体(通常是宋体11号字,视版本可能不同)下的平均宽度得到的。
只要记住一个字符的宽度是8像素 (2013-10-29备注:一个字符的宽度取决于Excel文件中的第一个字体大小,并不一定就是8像素)就可以了。
一个单元格实际的像素宽度还要在 (字符个数 * 默认字符的宽度)的基础上前后各加2个像素的空白边。另外字符之间会叠加一个像素,在计算时也要减去:
(2013-10-29备注:一个字符的边距不一定只是2像素,和字体有关系)
像素 = 2个像素空白 + (字符个数 * 默认字符的宽度) + 2个像素空白 - (字符个数 - 1)
整理一下,公式变成:
像素 = 5 + (字符个数 * (默认字符的宽度 - 1))
代入默认字符宽度8:
像素 = 5 + (字符个数 * 7)
POI中的字符宽度算法是:
double 宽度 = (字符个数 * (字符宽度 - 1) + 5) / (字符宽度 - 1) * 256;
然后再四舍五入成整数。
最后把我写的一个工具类贴上来,方便使用。
public class HSSFUtil {
private static final short TWIPS_PER_PIEXL = 15; //1 Pixel = 1440 TPI / 96 DPI = 15 Twips
public static short pixel2PoiHeight(int pixel) {
return (short) (pixel * TWIPS_PER_PIEXL);
}
public static int poiHeight2Pixel(short height) {
return height / TWIPS_PER_PIEXL;
}
//像素转poi宽度
public static int pixel2PoiWidth(FontInfo fontInfo, int pixel) {
double numChars = pixel2Character(fontInfo, pixel);
numChars *= fontInfo.charWidth;
numChars += fontInfo.spacing;
numChars /= fontInfo.charWidth;
numChars *= 256;
return (int)numChars;
}
//poi宽度转像素
public static int poiWidth2Pixel(FontInfo fontInfo, int poiWidth) {
double numChars = poiWidth2Character(fontInfo, poiWidth);
return character2Piexl(fontInfo, numChars);
}
public static double poiWidth2Character(FontInfo fontInfo, int poiWidth){
double numChars = poiWidth / 256.0 - (fontInfo.spacing * 1.0 / fontInfo.charWidth);
//2位小数
return new BigDecimal(numChars).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static int character2PoiWidth(FontInfo fontInfo, double numChars){
double w = (numChars + (fontInfo.spacing * 1.0 / fontInfo.charWidth)) * 256;
return (int) w;
}
//excel字符转像素
public static int character2Piexl(FontInfo fontInfo, double numChars){
double pixel = fontInfo.charWidth * numChars + fontInfo.spacing;
return (int)pixel;
}
//excel像素转字符
public static double pixel2Character(FontInfo fontInfo, int pixel){
double numChars = (pixel - fontInfo.spacing) * 1.0 / fontInfo.charWidth;
return new BigDecimal(numChars).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
//获得工作簿默认字符宽度
public static FontInfo getDefaultCharWidth(Workbook book){
//博客没人气,我已删除此段代码,请自行研究或者留邮箱
}
//获得不同字体的字符边距
private static int getSpacing(int fontHeightInPoints, int charWidth){
//博客没人气,我已删除此段代码,请自行研究或者留邮箱
}
}
用java poi 把一个txt里面的内容导入excel:
参考代码:
public class ReadWriteXL
{
public static void main(String[] args) throws InvalidFormatException, IOException{
ArrayList arr=new ArrayList();
File f=new File("F:\\temp\\TEXT\\email.txt");
Scanner in=new Scanner(f);
System.out.println("Read Data From The Txt file ");
while(in.hasNext())
{
arr.add(in.nextLine());
}
System.out.println("Data From ArrayList");
System.out.println(arr);
System.out.println("Write data to an Excel Sheet");
FileOutputStream fos=new FileOutputStream("F:/temp/1.xls");
HSSFWorkbook workBook = new HSSFWorkbook();
HSSFSheet spreadSheet = workBook.createSheet("email");
HSSFRow row;
HSSFCell cell;
for(int i=0;i<arr.size();i++){
row = spreadSheet.createRow((short) i);
cell = row.createCell(i);
System.out.println(arr.get(i));
cell.setCellValue(arr.get(i).toString());
}
System.out.println("Done");
workBook.write(fos);
arr.clear();
System.out.println("ReadIng From Excel Sheet");
FileInputStream fis = null;
fis = new FileInputStream("F:/temp/1.xls");
HSSFWorkbook workbook = new HSSFWorkbook(fis);
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row1 = (HSSFRow) rows.next();
Iterator cells = row1.cellIterator();
while (cells.hasNext()) {
HSSFCell cell1 = (HSSFCell) cells.next();
arr.add(cell1);
}
}
System.out.println(arr);
}}
请教各位高手用poi操作excel如何设置单元格大小:
你选复制好你要填充的内容,再选中要填充的单元格中的一个,然后按信Ctrl逐个选中所有在填充但不相邻的单元格,最后按Enter(回车键)就填充了所有你选中的单元格.
不知道你是不是要这种效果,如果不是,可以说出你的具体一点的要求,可以帮你解决的.
使用POI 将数据和图片导入到Excel中,图片的大小怎么设置,请各位帮帮忙。: 不是这样设置属性,要直接充满单元格
我用poi读取xlsm文件时出错 POIXMLException:
这是版本问题,POI还支持不了你的excel版本。你可以使用xls来读取!
后面有jar包,你可以找一下例子就行了!
用java poi做导出功能实现进度条怎么做:
同时开启一个线程监控文件大小的变化吧!剩余时间也可以动态的根据此时间段的大小变化算出来,至于进度条,和剩余时间差不多的。做个除法就行了
private long totalNum;
private long successNum;
private long falseNum;
private Date currentBeginTime;
private Date beginTime;
private Date endTime;
private long totalData;
public void begin() {
}
public void end() {
}
public void setFlase(int i, Exception e) {
}
public boolean setSuccess(int index, long l) {
return false;
}
希望能够帮助到你,望采纳!
poiiceman用英语怎么说:
policeman
警察
双语对照
词典结果:
policeman
[英][pəˈli:smən][美][pəˈlismən]
n.(男)警察,警员; 看守矿井的人; [化] 淀帚;
复数:policemen
以上结果来自金山词霸
例句:
1.
The policeman puts his hand on your shoulder.
警察把他的手放在你的肩膀上。
用poi读取excel文件时,合并的单元格如何让每个单元格都有值: 你问的有点含糊,合并的单元格就是一个单元格了 如果要读取合并以后单元格中的内容,可以先读取这个文件中有多少个MergedRegion,然后再通过判断要读取的单元格的行和列号是否是这个MergedRegion的起始位置来读取内容。
-
17岁了为什么没有乳头
广州市购买社保的最低基数是多少: 每年7月劳动与社会保障局都会发布新的基数,但缴费比例不会变,以下是2011年6月至2012年6月的险种 缴费基数 企业缴费 个人缴费 小计 缴费比例 缴费金额 缴费比例 缴费金额 养老保险 2018 12% 242...
696条评论 5618人喜欢 1637次阅读 664人点赞 -
dnf莫尼在哪
2018年广东人均收入是多少?: 按照初步数据,广东省在2018年GDP总量约为9.73万亿元人民币,按照1.1亿常住人口计算,人均GDP约为8.845万元人民币。按照2018年全年人民币与美元的平均汇率折算,GDP总量约为1.47万亿美元,人均约为...
262条评论 6539人喜欢 1061次阅读 545人点赞 -
nba历史上最高的人是谁
PAYPAL限制账户 提交证明之后多久能取消限制呢?三项信息我都提交了,但是还是没有取消限制: 都提交了还是要得一段时间来解决的。耐心等待一下吧,以后注意一点,尽量不要被限制了。 ...
358条评论 1112人喜欢 1867次阅读 778人点赞 -
dsdna定量多少算正常
办了个人独资公司,现在想注销,注销后再办个体营业执照,请问办个体还可以用原来名字吗?: 可以,但是要等公司注销后才可以用,公司没有注销完成是不可以使用该字号在进行注册的 ...
459条评论 6059人喜欢 1484次阅读 381人点赞 -
10月的孩子吃什么
在公司干了三年。现在公司没有现在岗位。又不开你。怎么办: 企业在拖你,不愿意给补偿金。其实,目前最急的还是企业,巴不得你自己早点走。 ...
983条评论 2971人喜欢 1984次阅读 214人点赞
十大热门文章
随机推荐榜单
- 谁有2017年注册会计师东奥金鑫松《审计》的视频(共127讲的)可以分享给我吗
- 请问,谁有一级建造师资料(机电类),视频,讲义软件什么的,非常感谢!!邮箱:lxf1987dl,163的邮箱
- 重装系统后一开机提示ESC暂停启动 然后左上角有F1-F2 F9 F10 F11 和回车键是什么原因
- 如何用keil5调试arm程序
- QQ群转让给别人,还能收回来吗?
- 今年刘鑫琪刚转到实验小学四年级一班开学第一天老师让同学们作自我介绍轮到你了你会怎么说?
- 形象思维与想象是什么关系???
- 带办信用卡说收费12个点是什么意思??
- 辣子鸡怎么做好吃?
- 眼看就奔四了,女人衰老的特别快,想买点燕窝补一补,蛰燕堂如何啊?
- mac版outlook怎么编辑标签
- 写PLC运算指令时,实数2.5怎么表示,例如:[DADD D0 ? D0]
- 身份证过期了还能办母子保健卡用吗
- visual pollution是什么意思
- 求一首韩文歌 女生 应该是组合 高潮部分是 biu biu biu biu 是爵士舞蹈课的歌
- 一杯清茶待知音,半生知己有几人? 三千青丝觅良人,
- 帮我看下星盘,能看出未来另一半的情况吗?
- kgf是个什么计量单位
- AMD N970, 4GB GDDR3 1066 VISION ULTIMATE平台, Ati 6700M 1GB 能不能玩COD7???
- 要参加教师招聘面试,小学数学。我要准备什么,那天穿什么衣服,面试会考哪块内容