[]
GcExcel允许您将工作表、任何指定范围和各种形状类型转换为图像。因此,可以方便地直接在其他文档(如Word、PDF或PPT文档)中使用转换后的图像。支持的转换图像格式有PNG、JPG/JPEG、SVG和GIF。
GcExcel 还提供了 ImageSaveOptions 类中的各种方法,可在通过其相应的接口使用 toImage 方法将工作表、区域或形状导出为图像文件时修改和调整图像。
以下是 ImageSaveOptions 类的方法及其可用的范围:
方法 | 工作表 | 区域 | 形状 | 描述 |
---|---|---|---|---|
ScaleX and ScaleY | Yes | Yes | Yes | 获取或设置导出图像文件的缩放比例。 |
Resolution | Yes | Yes | Yes | 获取或设置导出图像文件中 JPEG 文件的 DPI。 |
BackgroundColor | Yes | Yes | Yes | 获取或设置导出图像文件的背景颜色。 |
ShowRowHeadings | Yes | Yes | No | 获取或设置是否在导出的图像文件中显示行标题。 |
ShowColumnHeadings | Yes | Yes | No | 获取或设置是否在导出的图像文件中显示列标题。 |
ShowGridlines | Yes | Yes | No | 获取或设置是否在导出的图像文件中显示网格线。 |
GridlineColor | Yes | Yes | No | 获取或设置导出图像文件中网格线的颜色。 |
ShowDrawingObjects | Yes | Yes | No | 获取或设置是否在导出的图像文件中显示绘图对象(图表、形状或图片)。 |
BlackAndWhite | Yes | Yes | Yes | 获取或设置是否导出黑白图像。 |
注意: 要转换具有透明度的图像,应使用类似PNG的图像格式,因为JPG/JPEG格式不支持图像透明度。
可以使用IWorksheet接口的toImage方法将工作表转换为图像。转换后的图像显示工作表的矩形区域,该矩形区域括在单元格A1和存在任何数据或形状的最后一个单元格下。例如,如果工作表包含范围为D5:F9的形状或数据,则转换后的图像将显示范围为A1:F9的区域。
无法将空白工作表转换为图像。
请参考以下示例代码将工作表转换为图像并设置 ImageSaveOptions 选项进行设置。在下面的示例代码中,ImageSaveOptions 修改了比例、行和列标题的显示属性、绘图对象和网格线,并更改了背景和网格线颜色。
// Create a new workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Add data
worksheet.getRange("A1").setValue("Sales Report");
worksheet.getRange("A1").getFont().setColor(Color.FromArgb(56, 93, 171));
worksheet.getRange("A1").getFont().setSize(24);
worksheet.getRange("A1").getFont().setBold(true);
worksheet.getRange("A3:E7")
.setValue(new Object[][] { { "Date", "Product", "Customer", "Amount", "Show" },
{ "1/1/2021", "Bose 785593-0050", "Fabrikam, Inc.", "$1,886.00", "1" },
{ "1/3/2021", "Canon EOS 1500D", "Alpine Ski House", "$4,022.00", "" },
{ "1/4/2021", "Haier 394L 4Star", "Coho Winery", "$8,144.00", "" },
{ "1/7/2021", "IFB 6.5 Kg FullyAuto", "Southridge Video", "$8,002.00", "1" } });
// Instantiate ImageSaveOptions and configure the properties
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setShowRowHeadings(true);
options.setShowColumnHeadings(false);
options.setShowDrawingObjects(true);
options.setBackgroundColor(Color.FromArgb(226, 231, 243));
options.setShowGridlines(true);
options.setGridlineColor(Color.FromArgb(145, 167, 214));
// Save worksheet to image without ImageSaveOptions
worksheet.toImage("WorksheetToImage.png");
// Save worksheet to image using ImageSaveOptions
worksheet.toImage("WorksheetToImage_UsingImageSaveOptions.png", options);
请参考以下示例代码,从现有文件中将工作表转换为图像。
// Create a new workbook
var workbook = new Workbook();
// Open a xlsx file
workbook.open("Workbook.xlsx");
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Instantiate ImageSaveOptions and configure the properties
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setShowRowHeadings(true);
options.setShowColumnHeadings(false);
options.setShowDrawingObjects(true);
options.setBackgroundColor(Color.FromArgb(226, 231, 243));
options.setShowGridlines(true);
options.setGridlineColor(Color.FromArgb(145, 167, 214));
// Create a png file stream
OutputStream out;
try {
// Create a png file stream
out = new FileOutputStream("ConvertWorksheetToImage.png");
// Export the worksheet to image without ImageSaveOptions
worksheet.toImage(out, ImageType.PNG);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
OutputStream outputStreamoptions;
try {
// Create another png file stream
outputStreamoptions = new FileOutputStream("ConvertWorksheetToImage_UsingImageSaveOptions.png");
// Export the worksheet to image using ImageSaveOptions
worksheet.toImage(outputStreamoptions, ImageType.PNG, options);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
可以使用 IRange 接口的 toImage 方法将工作表中的特定区域转换为图像。生成的图像显示指定范围内包含的工作表矩形区域。
请参考以下示例代码,从现有文件中将指定的范围转换为图像。在下面的示例代码中,ImageSaveOptions 修改了比例、行和列标题的显示属性、绘图对象、网格线以及更改了背景和网格线颜色。
// Create a new workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Add data
worksheet.getRange("D10:F10").setValue(new String[] { "Device", "Quantity", "Unit Price" });
worksheet.getRange("D11:F14").setValue(new Object[][] { { "T540p", 12, 9850 }, { "T570", 5, 7460 },
{ "Y460", 6, 5400 }, { "Y460F", 8, 6240 } });
IRange range = worksheet.getRange("D10:F14");
// Instantiate ImageSaveOptions and configure the properties
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setShowRowHeadings(true);
options.setShowColumnHeadings(false);
options.setShowDrawingObjects(true);
options.setBackgroundColor(Color.FromArgb(226, 231, 243));
options.setShowGridlines(true);
options.setGridlineColor(Color.FromArgb(145, 167, 214));
// Save range to image without ImageSaveOptions
range.toImage("RangeToImage.png");
// Save range to image using ImageSaveOptions
range.toImage("RangeToImage_UsingImageSaveOptions.png", options);
请参考以下示例代码,从现有文件中将指定的范围转换为图像。
// Create a new workbook
var workbook = new Workbook();
InputStream openFile;
try {
openFile = new FileInputStream("RangeWorkbook.xlsx");
// Open a xlsx file contains data in a range
workbook.open(openFile, OpenFileFormat.Xlsx);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Instantiate ImageSaveOptions and configure the properties
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setShowRowHeadings(true);
options.setShowColumnHeadings(false);
options.setShowDrawingObjects(true);
options.setBackgroundColor(Color.FromArgb(226, 231, 243));
options.setShowGridlines(true);
options.setGridlineColor(Color.FromArgb(145, 167, 214));
OutputStream out;
try {
// Create a png file stream
out = new FileOutputStream("ConvertRangeToImage.png");
// Export the range to image without ImageSaveOptions
worksheet.getRange("A1:C5").toImage(out, ImageType.PNG);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
OutputStream outputStreamoptions;
try {
// Create another png file stream
outputStreamoptions = new FileOutputStream("ConvertRangeToImage_UsingImageSaveOptions.png");
// Export the range to image using ImageSaveOptions
worksheet.getRange("A1:C5").toImage(outputStreamoptions, ImageType.PNG, options);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
GcExcel允许您使用 IShape接口的toImage 方法将各种形状类型转换为图像。形状类型包括图片、切片器、图表和自选图形等形状。生成的图像显示形状所包含的工作表矩形区域。
请参考以下示例代码,从现有文件中将自选图形转换为图像。下面的示例代码中使用 ImageSaveOptions 修改了比例并更改了背景颜色。
// Create a new workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Add an oval
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Oval, 20, 20, 200, 100);
// Instantiate ImageSaveOptions and configure the properties
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setBackgroundColor(Color.GetLimeGreen());
// Save shape to image without ImageSaveOptions
shape.toImage("ShapeToImage.png");
// Save shape to image using ImageSaveOptions
shape.toImage("ShapeToImage_UsingImageSaveOptions.png", options);
请参考以下示例代码,从现有文件中使用或不使用 ImageSaveOptions 将自选图形转换为图像。
// Create a new workbook
Workbook workbook = new Workbook();
// Open a xlsx file contains a group shape
workbook.open("ShapeWorkbook.xlsx");
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Instantiate ImageSaveOptions and configure the properties
ImageSaveOptions options = new ImageSaveOptions();
options.setScaleX(3.0);
options.setScaleY(2.0);
options.setBackgroundColor(Color.GetLime());
OutputStream out;
try {
// Create a png file stream
out = new FileOutputStream("ConvertShapeToImage.png");
// Export the shape to image without ImageSaveOptions
worksheet.getShapes().get(0).toImage(out, ImageType.PNG);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
OutputStream outputStreamoptions;
try {
// Create another png file stream
outputStreamoptions = new FileOutputStream("ConvertShapeToImage.png");
// Export the shape to image using ImageSaveOptions
worksheet.getShapes().get(0).toImage(outputStreamoptions, ImageType.PNG, options);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
请参考以下示例代码将图表转换为图像。
// create a new workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Prepare data for chart
worksheet.getRange("A1:D4")
.setValue(new Object[][] { { null, "Q1", "Q2", "Q3" }, { "Mobile Phones", 1330, 2345, 3493 },
{ "Laptops", 2032, 3632, 2197 }, { "Tablets", 6233, 3270, 2030 } });
worksheet.getRange("A:D").getColumns().autoFit();
// Add Area Chart
IShape shape = worksheet.getShapes().addChart(ChartType.Area, 250, 20, 360, 230);
// Add series to SeriesCollection
shape.getChart().getSeriesCollection().add(worksheet.getRange("A1:D4"), RowCol.Columns, true, true);
// Configure Chart Title
shape.getChart().getChartTitle().getTextFrame().getTextRange().getParagraphs().add("Annual Sales Record");
// Save chart to image
shape.toImage("ConvertChartToImage.png");
请参考以下示例代码,将图表从现有文件转换为图像。
// create a png file stream
FileOutputStream outputStream = new
FileOutputStream("ConvertChartToImage.png");
// create a new workbook
Workbook workbook = new Workbook();
FileInputStream fileStream = new FileInputStream("scatterchart.xlsx");
// Open a xlsx file contains a chart
workbook.open(fileStream);
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Export the chart to image
worksheet.getShapes().get(0).toImage(outputStream, ImageType.PNG);