私は PPT (PPTX ではない) で複数の複雑なテーブルを作成しようとしています。私は POI Apache HSLF を使用しています。問題は、複数のヘッダーを持つ複数の種類のテーブルがあることです。変換するよりも xls ファイルでテーブルを作成することを考えています。それらを画像化し、最終的に生成されたPPTに埋め込む
複雑な理論であることは承知していますが、今必要なのは、XLS を画像に変換することです。
助けてください
ありがとう
私は PPT (PPTX ではない) で複数の複雑なテーブルを作成しようとしています。私は POI Apache HSLF を使用しています。問題は、複数のヘッダーを持つ複数の種類のテーブルがあることです。変換するよりも xls ファイルでテーブルを作成することを考えています。それらを画像化し、最終的に生成されたPPTに埋め込む
複雑な理論であることは承知していますが、今必要なのは、XLS を画像に変換することです。
助けてください
ありがとう
POI ではできませんが、J XL または Aspose Cells を使用してチャート (グラフ) を変換またはコピーできます (Aspose は無料ではありません)。
これは、Excel チャートを画像に抽出するためのコード スニペットです。
public class ExportChartToImage
{
public static void main(String[] args) throws Exception
{
//Start Excel
Application excelApp = new Application();
excelApp.setVisible(true);
//Create test workbook
Workbook workbook = excelApp.createWorkbook("/home/tejus/Desktop/Chart Test");
//Get the first (and the only) worksheet
final Worksheet worksheet1 = workbook.getWorksheet(1);
//Fill-in the first worksheet with sample data
worksheet1.getCell("A1").setValue("Date");
worksheet1.getCell("A2").setValue("March 1");
worksheet1.getCell("A3").setValue("March 8");
worksheet1.getCell("A4").setValue("March 15");
worksheet1.getCell("B1").setValue("Customer");
worksheet1.getCell("B2").setValue("Smith");
worksheet1.getCell("B3").setValue("Jones");
worksheet1.getCell("B4").setValue("James");
worksheet1.getCell("C1").setValue("Sales");
worksheet1.getCell("C2").setValue("23");
worksheet1.getCell("C3").setValue("17");
worksheet1.getCell("C4").setValue("39");
excelApp.getOleMessageLoop().doInvokeAndWait(new Runnable()
{
public void run()
{
final Variant unspecified = Variant.createUnspecifiedParameter();
final Int32 localeID = new Int32(LocaleID.LOCALE_SYSTEM_DEFAULT);
Range sourceDataNativePeer = worksheet1.getRange("A1:C4").getPeer();
_Worksheet worksheetNativePeer = worksheet1.getPeer();
IDispatch chartObjectDispatch = worksheetNativePeer.chartObjects(unspecified, localeID);
ChartObjectsImpl chartObjects = new ChartObjectsImpl(chartObjectDispatch);
ChartObject chartObject = chartObjects.add(new DoubleFloat(100), new DoubleFloat(150), new DoubleFloat(300), new DoubleFloat(225));
_Chart chart = chartObject.getChart();
chart.setSourceData(sourceDataNativePeer, new Variant(XlRowCol.xlRows));
BStr fileName = new BStr("/home/tejus/Desktop/chart.gif");
Variant filterName = new Variant("gif");
Variant interactive = new Variant(false);
chart.export(fileName, filterName, interactive);
chart.setAutoDelete(false);
chart.release();
chartObject.setAutoDelete(false);
chartObject.release();
chartObjects.setAutoDelete(false);
chartObjects.release();
chartObjectDispatch.setAutoDelete(false);
chartObjectDispatch.release();
}
});
System.out.println("Press 'Enter' to terminate the application");
System.in.read();
//Close the MS Excel application.
boolean saveChanges = false;
workbook.close(saveChanges);
boolean forceQuit = true;
excelApp.close(forceQuit);
}
}
Jエクセルを使った
aspose
ワークシートを画像ファイルに変換するための API を提供するようなサードパーティ製品があります。ただし、ジオメトリ レイアウトを行うレンダリング エンジンを作成し、シートで使用可能なすべてのデータをキャンバスに書き込み、キャンバスからピクセル データを取得してファイルにレンダリングするコンバータを作成することから始めることができます。