您的位置:首页 > 运维架构 > Linux

Linux学习-05-磁盘与文件系统管理-1

2015-05-14 17:29 791 查看
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 

Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。 

如果处理.xlsx、docx、pptx的话可以试试Docx4j 。 
Docx4j is a Java library for creating and manipulating Microsoft Open XML (Word docx, Powerpoint pptx, and Excel xlsx) files. 

HSSF - 提供读写Microsoft Excel XLS格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

HWPF - 提供读写Microsoft Word DOC格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读Microsoft Visio格式档案的功能。

HPBF - 提供读Microsoft Publisher格式档案的功能。

HSMF - 提供读Microsoft Outlook格式档案的功能。

http://poi.apache.org/ 

Busy Developers' Guide to HSSF and XSSF Features 

版本:poi-3.8-20120326.jar 

1、生成Workbook 

Java代码  


//生成Workbook  

HSSFWorkbook wb = new HSSFWorkbook();  

  

//添加Worksheet(不添加sheet时生成的xls文件打开时会报错)  

@SuppressWarnings("unused")  

Sheet sheet1 = wb.createSheet();  

@SuppressWarnings("unused")  

Sheet sheet2 = wb.createSheet();  

@SuppressWarnings("unused")  

Sheet sheet3 = wb.createSheet("new sheet");  

@SuppressWarnings("unused")  

Sheet sheet4 = wb.createSheet("rensanning");  

  

//保存为Excel文件  

FileOutputStream out = null;  

  

try {  

    out = new FileOutputStream("c:\\text.xls");  

    wb.write(out);        

} catch (IOException e) {  

    System.out.println(e.toString());  

} finally {  

    try {  

        out.close();  

    } catch (IOException e) {  

        System.out.println(e.toString());  

    }  

}     

2、生成Workbook OOXML形式(.xlsx) 

Java代码  


//生成Workbook  

XSSFWorkbook wb = new XSSFWorkbook();  

  

//......  

3、打开Workbook 

Java代码  


//方法一:使用WorkbookFactory  

FileInputStream in = null;  

Workbook wb = null;  

  

try {  

    in = new FileInputStream(TEST_WORKBOOK_NAME);  

    wb = WorkbookFactory.create(in);  

} catch (IOException e) {  

    System.out.println(e.toString());  

} catch (InvalidFormatException e) {  

    System.out.println(e.toString());  

} finally {  

    try {  

        in.close();  

    } catch (IOException e) {  

        System.out.println(e.toString());  

    }  

}  

  

System.out.println("====================Workbook====================");  

System.out.println("Number of Sheets:" + wb.getNumberOfSheets());  

System.out.println("Sheet3's name:" + wb.getSheetName(3));  

System.out.println();  

  

//方法二:使用POIFSFileSystem  

try {  

    in = new FileInputStream(TEST_WORKBOOK_NAME);  

    POIFSFileSystem fs = new POIFSFileSystem(in);  

    wb = new HSSFWorkbook(fs);  

} catch (IOException e) {  

    System.out.println(e.toString());  

} finally {  

    try {  

        in.close();  

    } catch (IOException e) {  

        System.out.println(e.toString());  

    }  

}  

  

System.out.println("====================Workbook====================");  

System.out.println("Number of Sheets:" + wb.getNumberOfSheets());  

System.out.println("Sheet3's name:" + wb.getSheetName(3));  

System.out.println();  

4、打开加密的Workbook(读加密) 

Java代码  


FileInputStream input = new FileInputStream(TEST_WORKBOOK_NAME_ENCRYPTED);  

BufferedInputStream binput = new BufferedInputStream(input);  

POIFSFileSystem poifs = new POIFSFileSystem(binput);  

  

Biff8EncryptionKey.setCurrentUserPassword(TEST_WORKBOOK_PASSWORD);  

  

HSSFWorkbook wb = new HSSFWorkbook(poifs);  

  

System.out.println("====================EncryptedWorkbook====================");  

System.out.println("Number of Sheets:" + wb.getNumberOfSheets());  

System.out.println("Sheet0's name:" + wb.getSheetName(0));  

System.out.println();  

5、追加Sheet 

Java代码  


Sheet sheet = wb.createSheet("append sheet");  

6、复制Sheet 

Java代码  


wb.cloneSheet(1);  

7、修改Sheet名称 

Java代码  


wb.setSheetName(i, "SheetName new");  

8、删除Sheet 

Java代码  


wb.removeSheetAt(1);  

9、设置下部Sheet名的Tab的第一个可见Tab 

Java代码  


//设置下部Sheet名的Tab的第一个可见Tab(以左的Sheet看不见)  

wb.setFirstVisibleTab(2);  

10、调整Sheet顺序 

Java代码  


wb.setSheetOrder("SheetName3", 1);  

wb.setSheetOrder(wb.getSheetName(4), 0);  

11、设置当前Sheet 
t.setActiveSheet(); 

Java代码  


//设置当前Sheet  

wb.setActiveSheet(wb.getNumberOfSheets() - 1);  

//(Excel的当前Sheet被设置,需要结合setSelected使用,不然下部Sheet名的Tab还是默认为第一个)  

//(需要选择多个Sheet的话,每个Sheet调用setSelected(true)即可)  

wb.getSheetAt(wb.getNumberOfSheets() - 1).setSelected(true);  

12、固定窗口 

Java代码  


wb.getSheet("SheetName4").createFreezePane(2, 2);  


 

13、分割窗口 

Java代码  


wb.getSheet("SheetName5").createSplitPane(2000, 2000, 0, 0, HSSFSheet.PANE_LOWER_LEFT);  


 

14、Sheet缩放 

Java代码  


//setZoom(int numerator, int denominator)  

//"numerator"÷"denominator"  例如: 3÷1=3 那就是设置为300%  

  

//扩大(200%)  

wb.getSheet("sheetname1").setZoom(2, 1);  

//缩小(50%)  

wb.getSheet("sheetname2").setZoom(1, 2);  


 

15、行列分组 

Java代码  


wb.getSheet("sheetname3").groupColumn(4, 7);  

wb.getSheet("sheetname3").groupColumn(9, 12);  

wb.getSheet("sheetname3").groupColumn(10, 11);  

  

wb.getSheet("sheetname3").groupRow(5, 14);  

wb.getSheet("sheetname3").groupRow(7, 13);  

wb.getSheet("sheetname3").groupRow(16, 19);  



16、关闭分组 

Java代码  


wb.getSheet("sheetname3").setColumnGroupCollapsed(10, true);  

wb.getSheet("sheetname3").setRowGroupCollapsed(7, true);  

17、插入行 

Java代码  


Row row1 = wb.getSheet("sheetname4").createRow(1);  

Cell cell1_1 = row1.createCell(1);  

cell1_1.setCellValue(123);  

  

Row row4 = wb.getSheet("sheetname4").createRow(4);  

Cell cell4_3 = row4.createCell(3);  

cell4_3.setCellValue("中国");  

18、删除行 

Java代码  


Row row = wb.getSheet("sheetname4").getRow(1);  

wb.getSheet("sheetname4").removeRow(row);  

19、移动行 

Java代码  


//******移动行只移动内容,不牵扯行的删除和插入  

  

//移动行(把第1行和第2行移到第5行之后)  

wb.getSheet("sheetname5").shiftRows(0, 1, 5);  

  

//移动行(把第3行和第4行往上移动1行)  

wb.getSheet("sheetname5").shiftRows(2, 3, -1);  

20、修改行高 

Java代码  


//设置默认行高  

wb.getSheet("sheetname6").setDefaultRowHeight((short)100);  

  

//设置行高  

wb.getSheet("sheetname6").getRow(2).setHeight((short)(100 * 20));  

21、修改列宽 

Java代码  


//设置默认列宽  

wb.getSheet("sheetname7").setDefaultColumnWidth(12);  

  

//设置列宽  

wb.getSheet("sheetname7").setColumnWidth(0, 5 * 256);  

22、不显示网格线 

Java代码  


//不显示网格线  

wb.getSheet("sheetname8").setDisplayGridlines(false);  


 

23、设置分页 

Java代码  


//设置第一页:3行2列 (可以多次设置)  

wb.getSheet("sheetname9").setRowBreak(2);  

wb.getSheet("sheetname9").setColumnBreak(1);  


 

24、添加,删除,合并单元格 

Java代码  


//追加行  

for (int i = 0; i < 10; i++) {  

    Row row = wb.getSheet("sheetname10").createRow(i);  

    for (int j = 0; j < 10; j++) {  

        //添加单元格  

        Cell cell = row.createCell(j);  

        cell.setCellValue(i + 1);  

    }  

      

    //删除单元格  

    row.removeCell(row.getCell(5));  

}  

          

//合并单元格  

//CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)  

wb.getSheet("sheetname10").addMergedRegion(new CellRangeAddress(1, 4, 2, 3));  


 

25、设置Header,Footer 

Java代码  


//Header  

Header header = wb.getSheet("sheetname11").getHeader();  

header.setLeft(HSSFHeader.startUnderline() +  

        HSSFHeader.font("宋体", "Italic") +  

        "文字文字" +  

        HSSFHeader.endUnderline());  

header.setCenter(HSSFHeader.fontSize((short)16) +  

        HSSFHeader.startDoubleUnderline() +  

        HSSFHeader.startBold() +  

        "汉字汉字" +  

        HSSFHeader.endBold() +  

        HSSFHeader.endDoubleUnderline());  

header.setRight("打印时间:" + HSSFHeader.date() +  " " + HSSFHeader.time());  

  

//Footer  

Footer footer = wb.getSheet("sheetname11").getFooter();  

footer.setLeft("Copyright @ rensanning");  

footer.setCenter("Page:" + HSSFFooter.page() + " / " + HSSFFooter.numPages());  

footer.setRight("File:" + HSSFFooter.file());  


 


 

26、设置单元格值 

Java代码  


//boolean  

Cell cell00 = rows[0].createCell(0);  

boolean val00 = true;  

cell00.setCellValue(val00);  

  

//Calendar 格式化  

CellStyle styleCalendar = wb.createCellStyle();  

DataFormat formatCalendar = wb.createDataFormat();  

styleCalendar.setDataFormat(formatCalendar.getFormat("yyyy/mm/dd"));  

Cell cell11 = rows[1].createCell(0);  

Calendar val11 = Calendar.getInstance();  

cell11.setCellStyle(styleCalendar);  

cell11.setCellValue(val11);  

  

//Date 格式化  

CellStyle styleDate = wb.createCellStyle();  

DataFormat formatDate = wb.createDataFormat();  

styleDate.setDataFormat(formatDate.getFormat("yyyy/mm/dd hh:mm"));  

Cell cell21 = rows[2].createCell(0);  

Date val21 = new Date();  

cell21.setCellStyle(styleDate);  

cell21.setCellValue(val21);  

  

//double  

Cell cell30 = rows[3].createCell(0);  

double val30 = 1234.56;  

cell30.setCellValue(val30);  

  

//double 格式化  

CellStyle styleDouble = wb.createCellStyle();  

DataFormat formatDouble = wb.createDataFormat();  

styleDouble.setDataFormat(formatDouble.getFormat("#,##0.00"));  

Cell cell31 = rows[3].createCell(1);  

double val31 = 1234.56;  

cell31.setCellStyle(styleDouble);  

cell31.setCellValue(val31);  

  

//String  

Cell cell40 = rows[4].createCell(0);  

HSSFRichTextString val40 = new HSSFRichTextString("Test汉字");  

cell40.setCellValue(val40);  


 

27、设置单元格边线 

Java代码  


wb.getSheet("sheetname2").setColumnWidth(1, 4096);  

  

Row row1 = wb.getSheet("sheetname2").createRow(1);  

row1.setHeightInPoints(70);  

  

Cell cell1_1 = row1.createCell(1);  

cell1_1.setCellValue("Sample");  

  

CellStyle style = wb.createCellStyle();  

  

style.setBorderTop(CellStyle.BORDER_DASHED);  

style.setBorderBottom(CellStyle.BORDER_DOUBLE);  

style.setBorderLeft(CellStyle.BORDER_MEDIUM_DASH_DOT);  

style.setBorderRight(CellStyle.BORDER_MEDIUM);  

  

style.setTopBorderColor(IndexedColors.MAROON.getIndex());  

style.setBottomBorderColor(IndexedColors.SKY_BLUE.getIndex());  

style.setLeftBorderColor(IndexedColors.ORANGE.getIndex());  

style.setRightBorderColor(IndexedColors.BLUE_GREY.getIndex());  

  

cell1_1.setCellStyle(style);  


 

28、设置单元格背景填充 

Java代码  


wb.getSheet("sheetname3").setColumnWidth(0, 4096);  

wb.getSheet("sheetname3").setColumnWidth(1, 4096);  

wb.getSheet("sheetname3").setColumnWidth(2, 4096);  

  

Row row1 = wb.getSheet("sheetname3").createRow(1);  

row1.setHeightInPoints(70);  

  

Cell cell1_0 = row1.createCell(0);  

Cell cell1_1 = row1.createCell(1);  

Cell cell1_2 = row1.createCell(2);  

  

cell1_0.setCellValue("THIN_VERT_BANDS");  

cell1_1.setCellValue("BIG_SPOTS");  

cell1_2.setCellValue("THICK_HORZ_BANDS");  

  

CellStyle style1 = wb.createCellStyle();  

style1.setFillPattern(CellStyle.THIN_VERT_BANDS);  

style1.setFillForegroundColor(IndexedColors.WHITE.getIndex());  

style1.setFillBackgroundColor(IndexedColors.BLUE.getIndex());  

  

CellStyle style2 = wb.createCellStyle();  

style2.setFillPattern(CellStyle.BIG_SPOTS);  

style2.setFillForegroundColor(IndexedColors.RED.getIndex());  

style2.setFillBackgroundColor(IndexedColors.WHITE.getIndex());  

  

CellStyle style3 = wb.createCellStyle();  

style3.setFillPattern(CellStyle.THICK_HORZ_BANDS);  

style3.setFillForegroundColor(IndexedColors.PINK.getIndex());  

style3.setFillBackgroundColor(IndexedColors.BROWN.getIndex());  

  

cell1_0.setCellStyle(style1);  

cell1_1.setCellStyle(style2);  

cell1_2.setCellStyle(style3);  


 

29、设置单元格注释 

Java代码  


HSSFCreationHelper createHelper =  

    (HSSFCreationHelper)wb.getCreationHelper();  

Drawing patriarch = wb.getSheet("sheetname4").createDrawingPatriarch();  

  

//注释  

Row row = wb.getSheet("sheetname4").createRow(1);  

Cell cell = row.createCell(1);  

  

HSSFClientAnchor clientAnchor = new HSSFClientAnchor(0, 0, 0, 0,  

        (short) 4, 2, (short) 6, 5);  

  

Comment comment = patriarch.createCellComment(clientAnchor);  

comment.setString(createHelper.createRichTextString("注释注释111"));  

comment.setAuthor("rensanning");  

  

cell.setCellComment(comment);  

  

//带字体的注释  

Row row2 = wb.getSheet("sheetname4").createRow(2);  

Cell cell2 = row2.createCell(1);  

  

Font font = wb.createFont();  

font.setFontName("宋体");  

font.setFontHeightInPoints((short)10);  

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  

font.setColor(HSSFColor.RED.index);  

  

Comment comment2 = patriarch.createCellComment(clientAnchor);  

HSSFRichTextString text = new HSSFRichTextString("注释注释222");  

text.applyFont(font);  

comment2.setString(text);  

comment2.setAuthor("rensanning");  

  

cell2.setCellComment(comment2);  

30、设置单元格字体(斜体,粗体,下线,取消线,字体,大小,背景色) 

Java代码  


Font font = null;  

CellStyle style = null;  

  

//斜体  

font = wb.createFont();  

font.setItalic(true);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(1).getCell(1).setCellStyle(style);  

  

//粗体  

font = wb.createFont();  

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(2).getCell(1).setCellStyle(style);  

  

//字体名  

font = wb.createFont();  

font.setFontName("Courier New");  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(3).getCell(1).setCellStyle(style);  

  

//字体大小  

font = wb.createFont();  

font.setFontHeightInPoints((short)20);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(4).getCell(1).setCellStyle(style);  

  

//文字颜色  

font = wb.createFont();  

font.setColor(HSSFColor.YELLOW.index);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(5).getCell(1).setCellStyle(style);  

          

//上标  

font = wb.createFont();  

font.setTypeOffset(HSSFFont.SS_SUPER);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(6).getCell(1).setCellStyle(style);  

  

//下标  

font = wb.createFont();  

font.setTypeOffset(HSSFFont.SS_SUB);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(7).getCell(1).setCellStyle(style);  

  

//删除线  

font = wb.createFont();  

font.setStrikeout(true);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(8).getCell(1).setCellStyle(style);  

  

//下划线  

font = wb.createFont();  

font.setUnderline(HSSFFont.U_SINGLE);  

style = wb.createCellStyle();  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(9).getCell(1).setCellStyle(style);  

  

//背景色  

style = wb.createCellStyle();  

style.setFillForegroundColor(HSSFColor.SEA_GREEN.index);  

style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  

  

style.setFont(font);  

  

wb.getSheet("sheetname5").getRow(10).getCell(1).setCellStyle(style);  


 

31、设置超链接 

Java代码  


HSSFCreationHelper createHelper =  

    (HSSFCreationHelper)wb.getCreationHelper();  

  

CellStyle style = wb.createCellStyle();  

Font font = wb.createFont();  

font.setUnderline(HSSFFont.U_SINGLE);  

font.setColor(HSSFColor.BLUE.index);  

style.setFont(font);  

          

//追加行  

Row[] rows = new Row[10];  

for (int i = 0; i < 10; i++) {  

    rows[i] = wb.getSheet("sheetname6").createRow(i);  

}  

  

//URL  

rows[0].createCell(0).setCellValue("URL Link");  

  

HSSFHyperlink link1 = createHelper.createHyperlink(HSSFHyperlink.LINK_URL);  

link1.setAddress("http://poi.apache.org/");  

rows[0].getCell(0).setHyperlink(link1);  

rows[0].getCell(0).setCellStyle(style);  

  

//Mail  

rows[1].createCell(0).setCellValue("Email Link");  

  

HSSFHyperlink link2 = createHelper.createHyperlink(HSSFHyperlink.LINK_EMAIL);  

link2.setAddress("mailto:poi@apache.org?subject=Hyperlinks");  

rows[1].getCell(0).setHyperlink(link2);  

rows[1].getCell(0).setCellStyle(style);  

  

//File  

rows[2].createCell(0).setCellValue("File Link");  

  

HSSFHyperlink link3 = createHelper.createHyperlink(HSSFHyperlink.LINK_FILE);  

link3.setAddress("link.xls");  

rows[2].getCell(0).setHyperlink(link3);  

rows[2].getCell(0).setCellStyle(style);  

  

//Workbook内  

rows[3].createCell(0).setCellValue("Worksheet Link");  

  

HSSFHyperlink link4 = createHelper.createHyperlink(HSSFHyperlink.LINK_DOCUMENT);  

link4.setAddress("sheetname1!A1");  

rows[3].getCell(0).setHyperlink(link4);  

rows[3].getCell(0).setCellStyle(style);  

32、设置单元格横向对齐,纵向对齐 

Java代码  


//横向对齐  

wb.getSheet("sheetname7").setColumnWidth(2, 3072);  

  

Row[] row = new Row[7];  

Cell[] cell = new Cell[7];  

  

for (int i = 0 ; i < 7 ; i++){  

  row[i] = wb.getSheet("sheetname7").createRow(i + 1);  

  cell[i] = row[i].createCell(2);  

  cell[i].setCellValue("Please give me a receipt");  

}  

  

CellStyle style0 = wb.createCellStyle();  

style0.setAlignment(CellStyle.ALIGN_GENERAL);  

cell[0].setCellStyle(style0);  

  

CellStyle style1 = wb.createCellStyle();  

style1.setAlignment(CellStyle.ALIGN_LEFT);  

cell[1].setCellStyle(style1);  

  

CellStyle style2 = wb.createCellStyle();  

style2.setAlignment(CellStyle.ALIGN_CENTER);  

cell[2].setCellStyle(style2);  

  

CellStyle style3 = wb.createCellStyle();  

style3.setAlignment(CellStyle.ALIGN_RIGHT);  

cell[3].setCellStyle(style3);  

  

CellStyle style4 = wb.createCellStyle();  

style4.setAlignment(CellStyle.ALIGN_FILL);  

cell[4].setCellStyle(style4);  

  

CellStyle style5 = wb.createCellStyle();  

style5.setAlignment(CellStyle.ALIGN_JUSTIFY);  

cell[5].setCellStyle(style5);  

  

CellStyle style6 = wb.createCellStyle();  

style6.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);  

cell[6].setCellStyle(style6);  

  

//纵向对齐  

Row row2 = wb.getSheet("sheetname8").createRow(1);  

row2.setHeightInPoints(70);  

Cell[] cell2 = new Cell[4];  

  

for (int i = 0 ; i < 4 ; i++){  

    cell2[i] = row2.createCell(i + 1);  

    cell2[i].setCellValue("Please give me a receipt");  

}  

  

CellStyle style02 = wb.createCellStyle();  

style02.setVerticalAlignment(CellStyle.VERTICAL_TOP);  

cell2[0].setCellStyle(style02);  

  

CellStyle style12 = wb.createCellStyle();  

style12.setVerticalAlignment(CellStyle.VERTICAL_CENTER);  

cell2[1].setCellStyle(style12);  

  

CellStyle style22 = wb.createCellStyle();  

style22.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM);  

cell2[2].setCellStyle(style22);  

  

CellStyle style32 = wb.createCellStyle();  

style32.setVerticalAlignment(CellStyle.VERTICAL_JUSTIFY);  

cell2[3].setCellStyle(style32);  


 

33、设置单元格旋转角度 

Java代码  


Row[] row = new Row[4];  

Cell[] cell = new Cell[4];  

  

for (int i = 0 ; i < 4 ; i++){  

  row[i] = wb.getSheet("sheetname9").createRow(i + 1);  

  cell[i] = row[i].createCell(2);  

  cell[i].setCellValue("Coffee");  

}  

  

CellStyle style0 = wb.createCellStyle();  

style0.setRotation((short)45);  

cell[0].setCellStyle(style0);  

  

CellStyle style1 = wb.createCellStyle();  

style1.setRotation((short)0);  

cell[1].setCellStyle(style1);  

  

CellStyle style2 = wb.createCellStyle();  

style2.setRotation((short)-45);  

cell[2].setCellStyle(style2);  

  

CellStyle style3 = wb.createCellStyle();  

style3.setRotation((short)-90);  

cell[3].setCellStyle(style3);  


 

34、设置单元格自动折行 

Java代码  


Row[] row = new Row[2];  

Cell[] cell = new Cell[2];  

  

for (int i = 0 ; i < 2 ; i++){  

  row[i] = wb.getSheet("sheetname10").createRow(i + 1);  

  cell[i] = row[i].createCell(2);  

  cell[i].setCellValue("Thank you very much.");  

}  

  

CellStyle style0 = wb.createCellStyle();  

style0.setWrapText(true);  

cell[0].setCellStyle(style0);  

  

CellStyle style1 = wb.createCellStyle();  

style1.setWrapText(false);  

cell[1].setCellStyle(style1);  


 

35、设置单元格文字缩进 

Java代码  


Row[] row = new Row[4];  

Cell[] cell = new Cell[4];  

  

for (int i = 0 ; i < 4 ; i++){  

  row[i] = wb.getSheet("sheetname11").createRow(i + 1);  

  cell[i] = row[i].createCell(2);  

  cell[i].setCellValue("Coffee");  

}  

  

CellStyle style1 = wb.createCellStyle();  

style1.setIndention((short)1);  

style1.setAlignment(CellStyle.ALIGN_LEFT);  

cell[1].setCellStyle(style1);  

  

CellStyle style2 = wb.createCellStyle();  

style2.setIndention((short)2);  

style2.setAlignment(CellStyle.ALIGN_LEFT);  

cell[2].setCellStyle(style2);  

  

CellStyle style3 = wb.createCellStyle();  

style3.setIndention((short)3);  

style3.setAlignment(CellStyle.ALIGN_LEFT);  

cell[3].setCellStyle(style3);  


 

36、自定义格式 

Java代码  


Row[] rows = new Row[2];  

for (int i = 0; i < rows.length; i++) {  

    rows[i] = wb.getSheet("sheetname12").createRow(i + 1);  

}  

DataFormat format = wb.createDataFormat();  

  

CellStyle[] styles = new CellStyle[2];  

for (int i = 0; i < styles.length; i++) {  

    styles[i] = wb.createCellStyle();  

}  

styles[0].setDataFormat(format.getFormat("0.0"));  

styles[1].setDataFormat(format.getFormat("#,##0.000"));  

  

Cell[] cells = new Cell[2];  

for (int i = 0; i < cells.length; i++)  {  

    cells[i] = rows[i].createCell(1);  

    cells[i].setCellValue(1111.25);  

  

    cells[i].setCellStyle(styles[i]);  

}  


 

37、设置公式 

Java代码  


Row row1 = wb.getSheet("sheetname13").createRow(1);  

Row row2 = wb.getSheet("sheetname13").createRow(2);  

  

Cell cell1_1 = row1.createCell(1);  

Cell cell1_2 = row1.createCell(2);  

Cell cell1_3 = row1.createCell(3);  

Cell cell2_3 = row2.createCell(3);  

  

cell1_1.setCellValue(30);  

cell1_2.setCellValue(25);  

cell1_3.setCellFormula("B2+C2");  

cell2_3.setCellFormula("MOD(B2,C2)");  


 

38、画直线,圆圈(椭圆),正方形(长方形),Textbox 

Java代码  


HSSFPatriarch patriarch = ((HSSFSheet)wb.getSheet("sheetname14")).createDrawingPatriarch();  

  

//直线  

HSSFClientAnchor clientAnchor1 = new HSSFClientAnchor(0, 0, 0, 0,  

        (short) 4, 2, (short) 6, 5);  

HSSFSimpleShape shape1 = patriarch.createSimpleShape(clientAnchor1);  

shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE);  

  

//圆圈(椭圆)  

HSSFClientAnchor clientAnchor2 = new HSSFClientAnchor(0, 0, 0, 0,  

        (short) 8, 4, (short) 6, 5);  

HSSFSimpleShape shape2 = patriarch.createSimpleShape(clientAnchor2);  

shape2.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);  

  

//正方形(长方形)  

HSSFClientAnchor clientAnchor3 = new HSSFClientAnchor(0, 0, 0, 0,  

        (short) 12, 6, (short) 6, 5);  

HSSFSimpleShape shape3 = patriarch.createSimpleShape(clientAnchor3);  

shape3.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);  

  

//Textbox  

HSSFClientAnchor clientAnchor4 = new HSSFClientAnchor(0, 0, 0, 0,  

        (short) 14, 8, (short) 6, 5);  

HSSFTextbox textbox = patriarch.createTextbox(clientAnchor4);  

textbox.setString(new HSSFRichTextString("This is a test"));  

39、插入图片 

Java代码  


//需要commons-codec-1.6.jar  

FileInputStream jpeg = new FileInputStream("resource/test.jpg");  

byte[] bytes = IOUtils.toByteArray(jpeg);  

int pictureIndex = wb.addPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);  

jpeg.close();  

  

HSSFCreationHelper helper = (HSSFCreationHelper) wb.getCreationHelper();  

  

HSSFPatriarch patriarch = ((HSSFSheet)wb.getSheet("sheetname15")).createDrawingPatriarch();  

  

HSSFClientAnchor clientAnchor = helper.createClientAnchor();  

  

clientAnchor.setCol1(3);  

clientAnchor.setRow1(2);  

  

HSSFPicture picture = patriarch.createPicture(clientAnchor, pictureIndex);  

picture.resize();  


 

40、设置可输入List 

Java代码  


CellRangeAddressList addressList = new CellRangeAddressList(  

        0,  

        0,  

        0,  

        0);  

  

final String[] DATA_LIST = new String[] {  

        "10",  

        "20",  

        "30",  

};  

DVConstraint dvConstraint =  

    DVConstraint.createExplicitListConstraint(DATA_LIST);  

  

HSSFDataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);  

dataValidation.setSuppressDropDownArrow(false);  

  

wb.getSheet("sheetname16").addValidationData(dataValidation);  


 

41、设置输入提示信息 

Java代码  


CellRangeAddressList addressList = new CellRangeAddressList(  

        0,  

        0,  

        0,  

        0);  

  

final String[] DATA_LIST = new String[] {  

        "10",  

        "20",  

        "30",  

};  

DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(DATA_LIST);  

  

HSSFDataValidation dataValidation =  

    new HSSFDataValidation(addressList, dvConstraint);  

dataValidation.setSuppressDropDownArrow(false);  

dataValidation.createPromptBox("输入提示", "请从下拉列表中选择!");  

dataValidation.setShowPromptBox(true);  

  

wb.getSheet("sheetname17").addValidationData(dataValidation);  


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: