4.Apache POI使用詳解

来源:https://www.cnblogs.com/lukelook/archive/2018/03/27/8660798.html
-Advertisement-
Play Games

一.POI結構與常用類 1.POI介紹 Apache POI是Apache軟體基金會的開源項目,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。 .NET的開發人員則可以利用NPOI (POI for .NET) 來存取 Microsoft Office文檔的功 ...


一.POI結構與常用類

1.POI介紹

Apache POI是Apache軟體基金會的開源項目,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。 .NET的開發人員則可以利用NPOI (POI for .NET) 來存取 Microsoft Office文檔的功能

2.POI結構說明

 

包名稱 說明

 

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格式檔案的功能。 3.POI常用類說明
類名                說明
HSSFWorkbook        Excel的文檔對象
HSSFSheet        Excel的表單
HSSFRow             Excel的行
HSSFCell         Excel的格子單元
HSSFFont            Excel字體
   
HSSFDataFormat      格子單元的日期格式
HSSFHeader          Excel文檔Sheet的頁眉
HSSFFooter          Excel文檔Sheet的頁腳
HSSFCellStyle       格子單元樣式
HSSFDateUtil        日期
HSSFPrintSetup      列印
HSSFErrorConstants  錯誤信息

二.簡單的實例代碼

 Maven 依賴

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>


<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>

 

package com.my.utils;

import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

public class UsePoiCreateExcle {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String path = "D:\\java\\test\\test.xls";

        // create workbook
        Workbook workbook = new HSSFWorkbook();

        // create sheet
        Sheet sheet1 = workbook.createSheet("teacher");
        Sheet sheet2 = workbook.createSheet("student");

        // 設置為當前頁面
        workbook.setActiveSheet(0);

        // 創建行
        Row row = sheet1.createRow(0);

        // 創建表格
        Cell cell1 = row.createCell(0);
        Cell cell2 = row.createCell(1);
        Cell cell3 = row.createCell(2);

        CellStyle style = workbook.createCellStyle();
        // 對齊方式
        style.setAlignment(CellStyle.ALIGN_CENTER);

        // 先設置樣式再設置顏色
        style.setBorderBottom(CellStyle.BORDER_THICK);
        style.setBottomBorderColor(HSSFColor.RED.index);

        //先設置填充樣式再設置顏色
        style.setFillPattern(CellStyle.ALT_BARS);
        style.setFillForegroundColor(HSSFColor.GREEN.index);
        cell1.setCellValue("序號");
        cell1.setCellStyle(style);
        cell2.setCellValue("姓名");
        cell3.setCellValue("年齡");
        System.out.println("=============");
        try {
            FileOutputStream out = new FileOutputStream(path);
            workbook.write(out);
            out.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

 

 

三.具體樣式詳解

1.創建文檔摘要信息

workbook.createInformationProperties();//創建文檔信息
DocumentSummaryInformation dsi= workbook.getDocumentSummaryInformation();//摘要信息
dsi.setCategory("類別:Excel文件");//類別
dsi.setManager("管理者:李志偉");//管理者
dsi.setCompany("公司:--");//公司
SummaryInformation si = workbook.getSummaryInformation();//摘要信息
si.setSubject("主題:--");//主題
si.setTitle("標題:測試文檔");//標題
si.setAuthor("作者:李志偉");//作者
si.setComments("備註:POI測試文檔");//備註

 

2.創建批註

 

HSSFSheet sheet = workbook.createSheet("Test");// 創建工作表(Sheet)
HSSFPatriarch patr = sheet.createDrawingPatriarch();
HSSFClientAnchor anchor = patr.createAnchor(0, 0, 0, 0, 5, 1, 8, 3);//創建批註位置
HSSFComment comment = patr.createCellComment(anchor);//創建批註
comment.setString(new HSSFRichTextString("這是一個批註段落!"));//設置批註內容
comment.setAuthor("李志偉");//設置批註作者
comment.setVisible(true);//設置批註預設顯示
HSSFCell cell = sheet.createRow(2).createCell(1);
cell.setCellValue("測試");
cell.setCellComment(comment);//把批註賦值給單元格

 

創建批註位置HSSFPatriarch.createAnchor(dx1, dy1, dx2, dy2, col1, row1, col2, row2)方法參數說明:

dx1         第1個單元格中x軸的偏移量
dy1         第1個單元格中y軸的偏移量
dx2         第2個單元格中x軸的偏移量
dy2         第2個單元格中y軸的偏移量
col1        第1個單元格的列號
row1        第1個單元格的行號
col2        第2個單元格的列號
row2        第2個單元格的行號

 

3.創建頁眉和頁腳

 

HSSFSheet sheet = workbook.createSheet("Test");// 創建工作表(Sheet)
HSSFHeader header =sheet.getHeader();//得到頁眉
header.setLeft("頁眉左邊");
header.setRight("頁眉右邊");
header.setCenter("頁眉中間");
HSSFFooter footer =sheet.getFooter();//得到頁腳
footer.setLeft("頁腳左邊");
footer.setRight("頁腳右邊");
footer.setCenter("頁腳中間");

 

 也可以使用Office自帶的標簽定義,你可以通過HSSFHeader或HSSFFooter訪問到它們,都是靜態屬性,列表如下:

 

HSSFHeader.tab                  &A    表名
HSSFHeader.file                 &F    文件名
HSSFHeader.startBold            &B    粗體開始
HSSFHeader.endBold              &B    粗體結束
HSSFHeader.startUnderline       &U    下劃線開始
HSSFHeader.endUnderline         &U    下劃線結束
HSSFHeader.startDoubleUnderline &E    雙下劃線開始
HSSFHeader.endDoubleUnderline   &E    雙下劃線結束
HSSFHeader.time                 &T    時間
HSSFHeader.date                 &D    日期
HSSFHeader.numPages             &N    總頁面數
HSSFHeader.page                 &P    當前頁號

 

4.設置數據格式

 

HSSFSheet sheet = workbook.createSheet("Test");// 創建工作表(Sheet)
HSSFRow row=sheet.createRow(0);
//設置日期格式--使用Excel內嵌的格式
HSSFCell cell=row.createCell(0);
cell.setCellValue(new Date());
HSSFCellStyle style=workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
cell.setCellStyle(style);
//設置保留2位小數--使用Excel內嵌的格式
cell=row.createCell(1);
cell.setCellValue(12.3456789);
style=workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
cell.setCellStyle(style);
//設置貨幣格式--使用自定義的格式
cell=row.createCell(2);
cell.setCellValue(12345.6789);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("¥#,##0"));
cell.setCellStyle(style);
//設置百分比格式--使用自定義的格式
cell=row.createCell(3);
cell.setCellValue(0.123456789);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
cell.setCellStyle(style);
//設置中文大寫格式--使用自定義的格式
cell=row.createCell(4);
cell.setCellValue(12345);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("[DbNum2][$-804]0"));
cell.setCellStyle(style);
//設置科學計數法格式--使用自定義的格式
cell=row.createCell(5);
cell.setCellValue(12345);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("0.00E+00"));
cell.setCellStyle(style);

 

HSSFDataFormat.getFormat和HSSFDataFormat.getBuiltinFormat的區別:當使用Excel內嵌的(或者說預定義)的格式時,直接用HSSFDataFormat.getBuiltinFormat靜態方法即可。當使用自己定義的格式時,必須先調用HSSFWorkbook.createDataFormat(),因為這時在底層會先找有沒有匹配的內嵌FormatRecord,如果沒有就會新建一個FormatRecord,所以必須先調用這個方法,然後你就可以用獲得的HSSFDataFormat實例的getFormat方法了,當然相對而言這種方式比較麻煩,所以內嵌格式還是用HSSFDataFormat.getBuiltinFormat靜態方法更加直接一些。

 

5.合併單元格

 

HSSFSheet sheet = workbook.createSheet("Test");// 創建工作表(Sheet)
HSSFRow row=sheet.createRow(0);
//合併列
HSSFCell cell=row.createCell(0);
cell.setCellValue("合併列");
CellRangeAddress region=new CellRangeAddress(0, 0, 0, 5);
sheet.addMergedRegion(region);
//合併行
cell=row.createCell(6);
cell.setCellValue("合併行");
region=new CellRangeAddress(0, 5, 6, 6);
sheet.addMergedRegion(region);

 

CellRangeAddress對象其實就是表示一個區域,其構造方法如下:CellRangeAddress(firstRow, lastRow, firstCol, lastCol),參數的說明:

 

firstRow        區域中第一個單元格的行號
lastRow         區域中最後一個單元格的行號
firstCol        區域中第一個單元格的列號
lastCol         區域中最後一個單元格的列號 

 

6.單元格對齊

 

HSSFCell cell=row.createCell(0);
cell.setCellValue("單元格對齊");
HSSFCellStyle style=workbook.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
style.setWrapText(true);//自動換行
style.setIndention((short)5);//縮進
style.setRotation((short)60);//文本旋轉,這裡的取值是從-90到90,而不是0-180度。
cell.setCellStyle(style);  

水平對齊相關參數

 

如果是左側對齊就是   HSSFCellStyle.ALIGN_FILL;
如果是居中對齊就是   HSSFCellStyle.ALIGN_CENTER;
如果是右側對齊就是   HSSFCellStyle.ALIGN_RIGHT;
如果是跨列舉中就是   HSSFCellStyle.ALIGN_CENTER_SELECTION;
如果是兩端對齊就是   HSSFCellStyle.ALIGN_JUSTIFY;
如果是填充就是       HSSFCellStyle.ALIGN_FILL;

垂直對齊相關參數

如果是靠上就是     HSSFCellStyle.VERTICAL_TOP;
如果是居中就是     HSSFCellStyle.VERTICAL_CENTER;
如果是靠下就是     HSSFCellStyle.VERTICAL_BOTTOM;
如果是兩端對齊就是 HSSFCellStyle.VERTICAL_JUSTIFY;

7.使用邊框

 

邊框和其他單元格設置一樣也是調用CellStyle介面,CellStyle有2種和邊框相關的屬性,分別是:

 

邊框相關屬性

說明

範例

Border+方向

邊框類型

BorderLeft, BorderRight等

方向+BorderColor

邊框顏色

TopBorderColor,BottomBorderColor等

HSSFCell cell=row.createCell(1);
cell.setCellValue("設置邊框");
HSSFCellStyle style=workbook.createCellStyle();
style.setBorderTop(HSSFCellStyle.BORDER_DOTTED);//上邊框
style.setBorderBottom(HSSFCellStyle.BORDER_THICK);//下邊框
style.setBorderLeft(HSSFCellStyle.BORDER_DOUBLE);//左邊框
style.setBorderRight(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);//右邊框
style.setTopBorderColor(HSSFColor.RED.index);//上邊框顏色
style.setBottomBorderColor(HSSFColor.BLUE.index);//下邊框顏色
style.setLeftBorderColor(HSSFColor.GREEN.index);//左邊框顏色
style.setRightBorderColor(HSSFColor.PINK.index);//右邊框顏色
cell.setCellStyle(style);

其中邊框類型分為以下幾種:

邊框範例圖

對應的靜態值

 1

HSSFCellStyle.BORDER_DOTTED

 2

HSSFCellStyle.BORDER_HAIR

 3

HSSFCellStyle.BORDER_DASH_DOT_DOT

 4

HSSFCellStyle.BORDER_DASH_DOT

 5

HSSFCellStyle.BORDER_DASHED

 6

HSSFCellStyle.BORDER_THIN

 7

HSSFCellStyle.BORDER_MEDIUM_DASH_DOT_DOT

 8

HSSFCellStyle.BORDER_SLANTED_DASH_DOT

 9

HSSFCellStyle.BORDER_MEDIUM_DASH_DOT

 10

HSSFCellStyle.BORDER_MEDIUM_DASHED

 11

HSSFCellStyle.BORDER_MEDIUM

 12

HSSFCellStyle.BORDER_THICK

 13

HSSFCellStyle.BORDER_DOUBLE

 

8.設置字體

 

HSSFCell cell = row.createCell(1);
cell.setCellValue("設置字體");
HSSFCellStyle style = workbook.createCellStyle();
HSSFFont font = workbook.createFont();
font.setFontName("華文行楷");//設置字體名稱
font.setFontHeightInPoints((short)28);//設置字型大小
font.setColor(HSSFColor.RED.index);//設置字體顏色
font.setUnderline(FontFormatting.U_SINGLE);//設置下劃線
font.setTypeOffset(FontFormatting.SS_SUPER);//設置上標下標
font.setStrikeout(true);//設置刪除線
style.setFont(font);
cell.setCellStyle(style);

 

下劃線選項值:
        單下劃線 FontFormatting.U_SINGLE
        雙下劃線 FontFormatting.U_DOUBLE
        會計用單下劃線 FontFormatting.U_SINGLE_ACCOUNTING
        會計用雙下劃線 FontFormatting.U_DOUBLE_ACCOUNTING
    無下劃線 FontFormatting.U_NONE
    上標下標選項值:
        上標 FontFormatting.SS_SUPER
        下標 FontFormatting.SS_SUB
        普通,預設值 FontFormatting.SS_NONE

9.背景和紋理

 

SSFCellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(HSSFColor.GREEN.index);//設置圖案顏色
style.setFillBackgroundColor(HSSFColor.RED.index);//設置圖案背景色
style.setFillPattern(HSSFCellStyle.SQUARES);//設置圖案樣式
cell.setCellStyle(style);

 

   

 

 

10.設置寬度和高度

 

HSSFSheet sheet = workbook.createSheet("Test");// 創建工作表(Sheet)
HSSFRow row = sheet.createRow(1);
HSSFCell cell = row.createCell(1);
cell.setCellValue("123456789012345678901234567890");
sheet.setColumnWidth(1, 31 * 256);//設置第一列的寬度是31個字元寬度
row.setHeightInPoints(50);//設置行的高度是50個點

 

這裡你會發現一個有趣的現象,setColumnWidth的第二個參數要乘以256,這是怎麼回事呢?其實,這個參數的單位是1/256個字元寬度,也就是說,這裡是把B列的寬度設置為了31個字元。

    設置行高使用HSSFRow對象的setHeight和setHeightInPoints方法,這兩個方法的區別在於setHeightInPoints的單位是點,而setHeight的單位是1/20個點,所以setHeight的值永遠是setHeightInPoints的20倍。

    你也可以使用HSSFSheet.setDefaultColumnWidth、HSSFSheet.setDefaultRowHeight和HSSFSheet.setDefaultRowHeightInPoints方法設置預設的列寬或行高。

 

11.判斷單元格是否為日期

 

//判斷單元格是否為日期類型,使用DateUtil.isCellDateFormatted(cell)方法,例如:
HSSFCell cell = row.createCell(1);
cell.setCellValue(new Date());//設置日期數據
System.out.println(DateUtil.isCellDateFormatted(cell));//輸出:false
HSSFCellStyle style =workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
cell.setCellStyle(style);//設置日期樣式
System.out.println(DateUtil.isCellDateFormatted(cell));//輸出:true

 

12.設置預設工作表

HSSFWorkbook workbook = new HSSFWorkbook();// 創建Excel文件(Workbook)
workbook.createSheet("Test0");// 創建工作表(Sheet)
workbook.createSheet("Test1");// 創建工作表(Sheet)
workbook.createSheet("Test2");// 創建工作表(Sheet)
workbook.createSheet("Test3");// 創建工作表(Sheet)
workbook.setActiveSheet(2);//設置預設工作表

 

13.重命名

HSSFWorkbook workbook = new HSSFWorkbook();// 創建Excel文件(Workbook)
workbook.createSheet("Test0");// 創建工作表(Sheet)
workbook.createSheet("Test1");// 創建工作表(Sheet)
workbook.createSheet("Test2");// 創建工作表(Sheet)
workbook.createSheet("Test3");// 創建工作表(Sheet)
workbook.setSheetName(2, "1234");//重命名工作表

 

14.調整表單顯示比例

HSSFWorkbook workbook = new HSSFWorkbook();// 創建Excel文件(Workbook)
HSSFSheet sheet1= workbook.createSheet("Test0");// 創建工作表(Sheet)
HSSFSheet sheet2=workbook.createSheet("Test1");// 創建工作表(Sheet)
HSSFSheet sheet3=workbook.createSheet("Test2");// 創建工作表(Sheet)
sheet1.setZoom(1,2);//50%顯示比例
sheet2.setZoom(2,1);//200%顯示比例
sheet3.setZoom(1,10);//10%顯示比例

 

15.顯示/隱藏網格線

HSSFWorkbook workbook = new HSSFWorkbook();// 創建Excel文件(Workbook)
HSSFSheet sheet1= workbook.createSheet("Test0");// 創建工作表(Sheet)
HSSFSheet sheet2=workbook.createSheet("Test1");// 創建工作表(Sheet)
sheet1.setDisplayGridlines(false);//隱藏Excel網格線,預設值為true
sheet2.setGridsPrinted(true);//列印時顯示網格線,預設值為false

 

16.遍歷Sheet

String filePath = "d:\\users\\lizw\\桌面\\POI\\sample.xls";
FileInputStream stream = new FileInputStream(filePath);
HSSFWorkbook workbook = new HSSFWorkbook(stream);//讀取現有的Excel
HSSFSheet sheet= workbook.getSheet("Test0");//得到指定名稱的Sheet
for (Row row : sheet)
{
    for (Cell cell : row)
    {
        System.out.print(cell + "\t");
    }
    System.out.println();
}

 

其他詳見:http://www.cnblogs.com/LiZhiW/p/4313789.html

 

POI HSSFColor中Excel表格顏色對照表

http://blog.csdn.net/qq_27937043/article/details/72779442 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • You are planning to take some rest and to go out on vacation, but you really don’t know which cities you should visit. So, you ask your parents for he ...
  • 博客開通以來第一篇文章!文筆有限,能用代碼的儘量不多說,各位看官輕拍磚.... 前言: 前段時間因為想要研究一下http請求,在圖靈買了小書,因為看到樣例是用nodeJs寫的,再加上之前就想瞭解下nodeJs,於是掄起袖子研究了一下... 想研究nodeJs的同學推薦大家 CNodeJs入門教程 n ...
  • 後端開發:1、高級java軟體架構師實戰培訓視頻教程2、大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分散式電商項目視頻教程3、Spark Streaming實時流處理項目實戰4、Java校招面試 Google面試官親授5、Java開發企業級許可權管理系統6、Java ...
  • "&&","||"邏輯重載操作符的缺陷 大家,都知道"&&","||"擁有"短路"功能 比如a=(0&&b) : 由於第一個操作數為0,所以不會去判斷b的內容,直接執行a=0 比如a=(-100||b): 由於-100不為0,所以不會去判斷b的內容,直接執行a=1 可以參考下麵代碼: 運行列印: 並 ...
  • 後端開發:1、高級java軟體架構師實戰培訓視頻教程2、大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分散式電商項目視頻教程3、Spark Streaming實時流處理項目實戰4、Java校招面試 Google面試官親授5、Java開發企業級許可權管理系統6、Java ...
  • 後端開發:1、高級java軟體架構師實戰培訓視頻教程2、大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分散式電商項目視頻教程3、Spark Streaming實時流處理項目實戰4、Java校招面試 Google面試官親授5、Java開發企業級許可權管理系統6、Java ...
  • 後端開發:1、高級java軟體架構師實戰培訓視頻教程2、大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分散式電商項目視頻教程3、Spark Streaming實時流處理項目實戰4、Java校招面試 Google面試官親授5、Java開發企業級許可權管理系統6、Java ...
  • 後端開發:1、高級java軟體架構師實戰培訓視頻教程2、大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分散式電商項目視頻教程3、Spark Streaming實時流處理項目實戰4、Java校招面試 Google面試官親授5、Java開發企業級許可權管理系統6、Java ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...

.            

HSSFColor.GREY_80_PERCENT

.

HSSFColor.INDIGO

.

HSSFColor.PLUM

 

HSSFColor.BROWN

.

HSSFColor.OLIVE_GREEN

.

HSSFColor.DARK_GREEN

.

HSSFColor.SEA_GREEN

.

HSSFColor.DARK_TEAL

.

HSSFColor.GREY_40_PERCENT

.

HSSFColor.BLUE_GREY

.

HSSFColor.ORANGE

.

HSSFColor.LIGHT_ORANGE

.

HSSFColor.GOLD

.

HSSFColor.LIME

.

HSSFColor.AQUA

.

HSSFColor.LIGHT_BLUE

.

HSSFColor.TAN

.

HSSFColor.LAVENDER

.

HSSFColor.ROSE

.

HSSFColor.PALE_BLUE

.

HSSFColor.LIGHT_YELLOW

.

HSSFColor.LIGHT_GREEN

.

HSSFColor.LIGHT_TURQUOISE

.

HSSFColor.SKY_BLUE

.

HSSFColor.BLUE