? ? ?? 在日常編輯Excel文檔時(shí)瓣喊,大多數(shù)時(shí)候都是對(duì)于數(shù)據(jù)的統(tǒng)計(jì)與分析癞埠,但有時(shí)為了能夠讓工作表中的某些數(shù)據(jù)更加醒目和突出,我們也會(huì)用到形狀功能斜脂,以此來(lái)使數(shù)據(jù)與圖形結(jié)合抓艳,進(jìn)而達(dá)到更加形象化和多樣化的效果。本文將通過(guò)使用Java程序來(lái)演示如何在Excel文檔中添加帚戳、讀取和刪除
使用工具: Spire.XLS for Java
Jar文件獲取及導(dǎo)入:
方法1:通過(guò)官方網(wǎng)站下載獲取jar包玷或。解壓后將lib文件夾下的Spire.Xls.jar文件導(dǎo)入Java程序。(如下圖)
方法2:通過(guò)maven倉(cāng)庫(kù)安裝導(dǎo)入片任。具體安裝詳解參見(jiàn)此網(wǎng)頁(yè)偏友。
【示例1】添加形狀
import com.spire.xls.*;
import com.spire.xls.core.IPrstGeomShape;
import java.awt.*;
public class AddShape {
public static void main(String[] args) {
//加載測(cè)試文檔
Workbook wb = new Workbook();
wb.loadFromFile("D:\\Desktop\\Sample.xlsx");
//獲取工作表
Worksheet sheet = wb.getWorksheets().get(0);
//添加橢圓形
IPrstGeomShape ellipse =sheet.getPrstGeomShapes().addPrstGeomShape(3,4,125,200,PrstGeomShapeType.Ellipse);
ellipse.getFill().setFillType(ShapeFillType.SolidColor);//單色填充
ellipse.getFill().setForeColor(new Color(180,125,208));
ellipse.setRotation(30);//形狀旋轉(zhuǎn)角度
ellipse.setText("橢圓形狀添加文本");//添加文本到形狀
?//添加星形
IPrstGeomShape star =
sheet.getPrstGeomShapes().addPrstGeomShape(3,8,180,200,PrstGeomShapeType.Star5);
star.getFill().setFillType(ShapeFillType.Gradient);//漸變填充
? star.getFill().setGradientColorType(GradientColorType.Preset);
? star.getFill().setForeColor(Color.orange);
//添加云朵形狀
IPrstGeomShape cloud = sheet.getPrstGeomShapes().addPrstGeomShape(12,4,175,200,PrstGeomShapeType.Cloud);
cloud.getFill().setFillType(ShapeFillType.Texture);//紋理填充
?cloud.getFill().setTexture(GradientTextureType.WhiteMarble);
?cloud.setVisible(true);//設(shè)置形狀是否可見(jiàn)
? //設(shè)置云朵陰影效果
? ? cloud.getShadow().setAngle(90);
? ?? cloud.getShadow().setDistance(10);
? ?? cloud.getShadow().setSize(100);
? ? cloud.getShadow().setColor(Color.GRAY);
? ?? cloud.getShadow().setBlur(30);
? ?? cloud.getShadow().setTransparency(1);
? ?? cloud.getShadow().hasCustomStyle();
//添加矩形形狀
IPrstGeomShape rect =
sheet.getPrstGeomShapes().addPrstGeomShape(15,8,125,200,PrstGeomShapeType.Rect);
? rect.getFill().customPicture("D:\\Desktop\\Image.jpg");//加載圖片填充
?? rect.setName("Shape4");//命名形狀
? ?? //保存文檔
??????? wb.saveToFile("output/AddShape.xlsx");
??????? wb.dispose();
}
}
形狀添加效果:
【示例2】讀取形狀中的文本和圖片
import com.spire.xls.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ExtractImage {
public static void main(String[] args) throws IOException {
//加載文檔
?? Workbook wb = new Workbook();
? ?? wb.loadFromFile("D:\\Desktop\\AddShape.xlsx");
//獲取工作表
?? Worksheet sheet = wb.getWorksheets().get(0);
//獲取指定形狀中的文本
?? String text = sheet.getPrstGeomShapes().get(0).getText();
? ?? System.out.println(text);
//獲取指定形狀中的圖片
? BufferedImage image = sheet.getPrstGeomShapes().get(3).getFill().getPicture();
?? ImageIO.write(image,"png",new File("output/ExtractedImage.png"));
??? }
}
文本、圖片讀取效果:
【示例3】刪除形狀
import com.spire.xls.*;
public class DeleteShape {
public static void main(String[] args) {
//加載文檔
? ? ?? Workbook wb = new Workbook();
??????? wb.loadFromFile("D:\\Desktop\\AddShape.xlsx");
//獲取工作表
? ? ?? Worksheet sheet = wb.getWorksheets().get(0);
//獲取指定形狀,刪除
? ? ? sheet.getPrstGeomShapes().get(1).remove();//通過(guò)索引值獲取并刪除
? ?? // sheet.getPrstGeomShapes().get("Shape4").remove();//通過(guò)形狀名稱獲取并刪除
? ? /*//刪除所有圖形
? ? ? for (int i = sheet.getPrstGeomShapes().getCount()-1; i >= 0; i--)
??????? {
??????????? sheet.getPrstGeomShapes().get(i).remove();
??????? }*/
???? ???//保存文檔
??????? wb.saveToFile("output/RemoveShape.xlsx");
??????? wb.dispose();
??? }
}
形狀刪除效果:
(本文完)