poi 设置word表格颜色_POI工具练习
POI是一個可以對excel文件進行操作的jar包,使用它可以幫助我們對excel進行操作,也就可以幫助我們實現在jsp頁面添加導入數據的功能。只要我們在控制層servlet中加入處理的方法就可以了;首先使用到POI都會與JXL進行對比:查閱之后大致是這樣的
一、jxl優點:Jxl對中文支持非常好,操作簡單,方法看名知意。
Jxl是純javaAPI,在跨平臺上表現的非常完美。 支持字體、數字、日期操作,能夠修飾單元格屬性, 支持圖像和圖表,但是這套API對圖形和圖表的支持很有限,而且僅僅識別PNG格式。缺點:效率低,圖片支持不完善,對格式的支持不如POI強大
二、POI優點:效率高。支持公式,宏,一些企業應用上會非常實用 ,能夠修飾單元格屬性。 支持字體、數字、日期操作。缺點:不成熟,代碼不能跨平臺。
是具體使用那個包,看你使用的具體情況來定。下面是POI工具類的使用
POI工具類為:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; 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.hssf.util.HSSFColor; import org.apache.poi.ss.util.CellRangeAddress; /*OutputStream out = response.getOutputStream();//response.reset();response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", "attachment; fileName=" + new String(("duty.xls").getBytes(), "iso8859-1"));// OutputStream outputStream = new FileOutputStream("D:/students.xls");workbook.write(out);out.close();*/ public class ExcelOperate {public static void main(String[] args) {// 創建Excel表格createExcel(getStudent());// 讀取Excel表格// List<Student> list = readExcel();// System.out.println(list.toString());}/*** 初始化數據* * @return 數據*/private static List<Student> getStudent() {List<Student> list = new ArrayList<Student>();Student student1 = new Student("小明", 8, "二年級");Student student2 = new Student("小光", 9, "三年級");Student student3 = new Student("小花", 10, "四年級");list.add(student1);list.add(student2);list.add(student3);return list;}/*** 創建Excel* * @param list* 數據*/private static void createExcel(List<Student> list) {// 創建一個Excel文件HSSFWorkbook workbook = new HSSFWorkbook();// 創建一個工作表HSSFSheet sheet = workbook.createSheet("學生表一");CellRangeAddress region = new CellRangeAddress(0, // first row0, // last row0, // first column2 // last column);sheet.addMergedRegion(region);HSSFRow hssfRow = sheet.createRow(0);HSSFCell headCell = hssfRow.createCell(0);headCell.setCellValue("學生列表");// 設置單元格格式居中HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);/*cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// cellStyle.setFillBackgroundColor(HSSFColor.GREEN.index);cellStyle.setFillForegroundColor(HSSFColor.GREEN.index);HSSFFont font = workbook.createFont();font.setFontName("楷體"); //字體font.setFontHeightInPoints((short)30); //字體大小font.setColor(HSSFColor.RED.index);//顏色font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗font.setItalic(true); //傾斜cellStyle.setFont(font);*/headCell.setCellStyle(cellStyle);// 添加表頭行hssfRow = sheet.createRow(1);// 添加表頭內容headCell = hssfRow.createCell(0);headCell.setCellValue("姓名");headCell.setCellStyle(cellStyle);headCell = hssfRow.createCell(1);headCell.setCellValue("年齡");headCell.setCellStyle(cellStyle);headCell = hssfRow.createCell(2);headCell.setCellValue("年級");headCell.setCellStyle(cellStyle);// 添加數據內容for (int i = 0; i < list.size(); i++) {hssfRow = sheet.createRow((int) i + 2);Student student = list.get(i);// 創建單元格,并設置值HSSFCell cell = hssfRow.createCell(0);cell.setCellValue(student.getName());cell.setCellStyle(cellStyle);cell = hssfRow.createCell(1);cell.setCellValue(student.getAge());cell.setCellStyle(cellStyle);cell = hssfRow.createCell(2);cell.setCellValue(student.getGrade());cell.setCellStyle(cellStyle);}// 保存Excel文件try {OutputStream outputStream = new FileOutputStream("D:/students.xls");workbook.write(outputStream);outputStream.close();} catch (Exception e) {e.printStackTrace();}}/*** 讀取Excel* * @return 數據集合*/private static List<Student> readExcel() {List<Student> list = new ArrayList<Student>();HSSFWorkbook workbook = null;try {// 讀取Excel文件InputStream inputStream = new FileInputStream("D:/students.xls");workbook = new HSSFWorkbook(inputStream);inputStream.close();} catch (Exception e) {e.printStackTrace();}// 循環工作表for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {HSSFSheet hssfSheet = workbook.getSheetAt(numSheet);if (hssfSheet == null) {continue;}// 循環行for (int rowNum = 2; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {HSSFRow hssfRow = hssfSheet.getRow(rowNum);if (hssfRow == null) {continue;}// 將單元格中的內容存入集合Student student = new Student();HSSFCell cell = hssfRow.getCell(0);if (cell == null) {continue;}student.setName(cell.getStringCellValue());cell = hssfRow.getCell(1);if (cell == null) {continue;}student.setAge((int) cell.getNumericCellValue());cell = hssfRow.getCell(2);if (cell == null) {continue;}student.setGrade(cell.getStringCellValue());list.add(student);}}return list;} }class Student {private String name;private int age;private String grade;public Student() {}public Student(String name, int age, String grade) {super();this.name = name;this.age = age;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", grade=" + grade+ "]";} }這個里面是具體的用法,與對一個學生列表實現的案例;使用該工具我們只要在servelt中調用工具類的創建excel與實現excel的方法即可;就像:
DutyService ds=new DutyServiceImpl();List<Duty> dutyList=ds.findBy(empId,deptno,dtDate);//返回輸出流createExcel(dutyList,resp);我將查詢返回到的列表傳輸到創建excel的方法,并且對excel的方法進行了重寫,在與前臺頁面進行交互的時候,因為要對客戶端進行寫入操作,而不是對服務器端進行操作,所以我將response也傳入進去,因為我們不能簡單對返回的數據進行重定向或者請求轉發操作,而是以流的方式寫回去
try {resp.setContentType("application/vnd.ms-excel");//聲明導出excelresp.setHeader("Content-disposition", "attachment;filename=duty.xls");//附件形式下載包括名字//OutputStream outputStream = new FileOutputStream("D:/kaoqin.xls");ServletOutputStream outputStream = resp.getOutputStream();workbook.write(outputStream);outputStream.close();} catch (Exception e) {e.printStackTrace();}總結
以上是生活随笔為你收集整理的poi 设置word表格颜色_POI工具练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java+filter加密_Javawe
- 下一篇: 音乐美术计算机在中考,2022年音乐、美