[]
        
(Showing Draft Content)

转换为图像

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);