// Create a new workbook Workbook workbook = new Workbook(); // Please uncomment the following code and ensure you fill in the correct API Endpoint, API Key, and Model Name. // Workbook.setAIModelRequestHandler(new OpenAIModelRequestHandler(apiEndpoint, apiKey, modelName)); IWorksheet sheet = workbook.getWorksheets().get(0); sheet.setName("AI Sentiment Analysis Demo"); // Set column widths for better visibility sheet.getColumns().get(0).setColumnWidth(55); sheet.getColumns().get(1).setColumnWidth(55); // ============ Example: Customer Reviews ============ sheet.getRange("A1:B1").merge(); sheet.getRange("A1").setValue("Example: Customer Product Reviews"); sheet.getRange("A1").getFont().setBold(true); sheet.getRange("A1").getFont().setSize(16); sheet.getRange("A1").getFont().setColor(Color.GetWhite()); sheet.getRange("A1").getInterior().setColor(Color.FromArgb(90, 126, 158)); sheet.getRange("A1").setHorizontalAlignment(HorizontalAlignment.Center); sheet.getRange("A1").setVerticalAlignment(VerticalAlignment.Center); sheet.getRange("A1").setRowHeight(35); // ============ Formula Description ============ sheet.getRange("A3").setValue("Formula:"); sheet.getRange("A3").getFont().setBold(true); sheet.getRange("A3").getFont().setSize(11); sheet.getRange("A3").getInterior().setColor(Color.FromArgb(217, 225, 242)); sheet.getRange("B3").setValue("=AI.TEXTSENTIMENT(A6:A13,\"Positive\",\"Negative\",\"Neutral\")"); sheet.getRange("B3").getFont().setItalic(true); sheet.getRange("B3").getFont().setColor(Color.FromArgb(68, 114, 196)); sheet.getRange("B3").setWrapText(true); // Table headers sheet.getRange("A5:B5").setValue(new Object[][] { { "Review Text", "AI Sentiment" } }); sheet.getRange("A5:B5").getFont().setBold(true); sheet.getRange("A5:B5").getInterior().setColor(Color.FromArgb(155, 194, 230)); sheet.getRange("A5:B5").setHorizontalAlignment(HorizontalAlignment.Center); // Sample review texts sheet.getRange("A6:A13").setValue(new Object[][] { { "I absolutely love this product! It exceeded all my expectations!" }, { "This is the worst purchase I've ever made. Total waste of money." }, { "The product is okay, nothing special but does the job." }, { "Outstanding quality and excellent customer service!" }, { "Disappointed with the quality. Not worth the price." }, { "It's average. Works fine but could be better." }, { "Amazing! Best product ever! Highly recommend to everyone!" }, { "Terrible experience. Would not recommend to anyone." } }); // Style review text cells for (int i = 6; i <= 13; i++) { if ((i - 6) % 2 == 0) { sheet.getRange("A" + i).getInterior().setColor(Color.FromArgb(242, 242, 242)); } sheet.getRange("A" + i).getBorders().setLineStyle(BorderLineStyle.Thin); sheet.getRange("A" + i).getBorders().setColor(Color.FromArgb(200, 200, 200)); sheet.getRange("A" + i).setWrapText(true); } // Apply AI sentiment formula sheet.getRange("B6").setFormula2("=AI.TEXTSENTIMENT(A6:A13,\"Positive\",\"Negative\",\"Neutral\")"); // Style sentiment results with basic formatting for (int i = 6; i <= 13; i++) { sheet.getRange("B" + i).getFont().setBold(true); sheet.getRange("B" + i).getFont().setSize(11); sheet.getRange("B" + i).setHorizontalAlignment(HorizontalAlignment.Center); sheet.getRange("B" + i).getBorders().setLineStyle(BorderLineStyle.Medium); sheet.getRange("B" + i).getBorders().setColor(Color.FromArgb(200, 200, 200)); } // ============ Add Conditional Formatting for Sentiment Results ============ // Positive sentiment - Green IFormatCondition positiveCondition = (IFormatCondition) sheet.getRange("B6:B13").getFormatConditions().add( FormatConditionType.CellValue, FormatConditionOperator.Equal, "=\"Positive\"", null ); positiveCondition.getInterior().setColor(Color.FromArgb(226, 239, 218)); positiveCondition.getFont().setColor(Color.FromArgb(0, 128, 0)); // Negative sentiment IFormatCondition negativeCondition = (IFormatCondition) sheet.getRange("B6:B13").getFormatConditions().add( FormatConditionType.CellValue, FormatConditionOperator.Equal, "=\"Negative\"", null ); negativeCondition.getInterior().setColor(Color.FromArgb(255, 199, 206)); negativeCondition.getFont().setColor(Color.FromArgb(192, 0, 0)); // Neutral sentiment IFormatCondition neutralCondition = (IFormatCondition) sheet.getRange("B6:B13").getFormatConditions().add( FormatConditionType.CellValue, FormatConditionOperator.Equal, "=\"Neutral\"", null ); neutralCondition.getInterior().setColor(Color.FromArgb(255, 242, 204)); neutralCondition.getFont().setColor(Color.FromArgb(128, 100, 0)); workbook.calculate(); // As AI functions operate on an asynchronous computation function, // it is necessary to await the completion of their calculation processes. workbook.waitForCalculationToFinish(); // Set print settings sheet.getPageSetup().setFitToPagesTall(1); sheet.getPageSetup().setFitToPagesWide(1); sheet.getPageSetup().setIsPercentScale(false); sheet.getPageSetup().setOrientation(PageOrientation.Landscape); // Save to a pdf file workbook.save("TextSentiment.pdf");