NPOI使用说明---格式化单元格内容

要创建一个新的xls文件其实很简单,只要我们初始化一个新的HSSFWorkbook实例就行了,如下所示:
using NPOI.HSSF.UserModel;
HSSFWorkbook hssfworkbook =newHSSFWorkbook();
是不是很方便啊,没有任何参数或设置,但这么创建有一些限制,这样创建出来的Workbook在Excel中打开是会报错的,因为Excel规定一个Workbook必须至少带1个Sheet,这也是为什么在Excel界面中,新建一个Workbook默认都会新建3个Sheet。所以必须加入下面的创建Sheet的代码才能保证生成的文件正常:
HSSFSheet sheet = hssfworkbook.CreateSheet("newsheet");
如果要创建标准的Excel文件,即拥有3个Sheet,可以用下面的代码:
hssfworkbook.CreateSheet("Sheet1");
hssfworkbook.CreateSheet("Sheet2");
hssfworkbook.CreateSheet("Sheet3");
最后就是把这个HSSFWorkbook实例写入文件了,代码也很简单,如下所示:
FileStream file =new FileStream(@"test.xls", FileMode.Create);
hssfworkbook.Write(file);
file.Close();
这里假设文件名是test.xls,在创建完FileStream之后,直接调用HSSFWorkbook类的Write方法就可以了。
最后你可以打开test.xls文件确认一下,是不是有3个空的Sheet。
要创建单元格首先要创建单元格所在的行,比如,下面的代码创建了第0行:
HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
HSSFRow row1=sheet1.CreateRow(0);
行建好了,就可以建单元格了,比如创建A1位置的单元格:
row1.CreateCell(0).SetCellValue(1);
这里要说明一下,SetCellValue有好几种重载,你可以设置单元格为bool、double、DateTime、string和HSSFRichTextString类型。其中对于string类型的重载调用的就是HSSFRichTextString类型的重载,所以是一样的,HSSFRichTextString可用于有字体或者Unicode的文本。
示例一:使用不同的格式格式化一个单元格中的内容,比如说:一个单元格的内容是“first, second”,现在要分别使用红色带删除线格式化"first", 使用蓝色格式化“second",在这种情况下可以使用HSSFRichText来实现这一目的,下面的代码简单的示例了上述需求的实现:
  //创建工作簿
  HSSFWorkbook wb = new HSSFWorkbook();
  //创建工作表
  HSSFSheet sheet = wb.createSheet();
  //为工作表添加行
  HSSFRow row = sheet.createRow(0);
  //添加单元格
  HSSFCell cell = row.createCell(0);
  //创建字体
  HSSFFont ftRed = wb.createFont();
  ftRed.setStrikeout(true);
  ftRed.setColor(HSSFColor.RED.index);  
  HSSFFont ftBlue = wb.createFont();
  ftBlue.setColor(HSSFColor.BLUE.index);
  //往单元格中写入的内容,并使用ft格式化"second"单词
  String[] subStr = {
    "first", "second"
  };
  String sText = subStr[0] + "," + subStr[1];
  HSSFRichTextString textString = new HSSFRichTextString(sText);
  textString.applyFont(
    sText.indexOf(subStr[0]),
    sText.indexOf(subStr[0]) + subStr[0].length(),
    ftRed
    );
  textString.applyFont(
    sText.indexOf(subStr[1]),
    sText.indexOf(subStr[1]) + subStr[1].length(),
    ftBlue
    );
  cell.setCellValue(textString);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值