// 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");
// Create a new workbook var workbook = Workbook() // Please uncomment the following code and ensure you fill in the correct API Endpoint, API Key, and Model Name. // Workbook.setAIModelRequestHandler(OpenAIModelRequestHandler(apiEndpoint, apiKey, modelName)) val sheet = workbook.worksheets[0] sheet.name = "AI Sentiment Analysis Demo" // Set column widths for better visibility sheet.columns[0].columnWidth = 55.0 sheet.columns[1].columnWidth = 55.0 // ============ Example: Customer Reviews ============ sheet.getRange("A1:B1").merge() sheet.getRange("A1").value = "Example: Customer Product Reviews" sheet.getRange("A1").font.bold = true sheet.getRange("A1").font.size = 16.0 sheet.getRange("A1").font.color = Color.GetWhite() sheet.getRange("A1").interior.color = Color.FromArgb(90, 126, 158) sheet.getRange("A1").horizontalAlignment = HorizontalAlignment.Center sheet.getRange("A1").verticalAlignment = VerticalAlignment.Center sheet.getRange("A1").rowHeight = 35.0 // ============ Formula Description ============ sheet.getRange("A3").value = "Formula:" sheet.getRange("A3").font.bold = true sheet.getRange("A3").font.size = 11.0 sheet.getRange("A3").interior.color = Color.FromArgb(217, 225, 242) sheet.getRange("B3").value = "=AI.TEXTSENTIMENT(A6:A13,\"Positive\",\"Negative\",\"Neutral\")" sheet.getRange("B3").font.italic = true sheet.getRange("B3").font.color = Color.FromArgb(68, 114, 196) sheet.getRange("B3").wrapText = true // Table headers sheet.getRange("A5:B5").value = arrayOf( arrayOf("Review Text", "AI Sentiment") ) sheet.getRange("A5:B5").font.bold = true sheet.getRange("A5:B5").interior.color = Color.FromArgb(155, 194, 230) sheet.getRange("A5:B5").horizontalAlignment = HorizontalAlignment.Center // Sample review texts sheet.getRange("A6:A13").value = arrayOf( arrayOf("I absolutely love this product! It exceeded all my expectations!"), arrayOf("This is the worst purchase I've ever made. Total waste of money."), arrayOf("The product is okay, nothing special but does the job."), arrayOf("Outstanding quality and excellent customer service!"), arrayOf("Disappointed with the quality. Not worth the price."), arrayOf("It's average. Works fine but could be better."), arrayOf("Amazing! Best product ever! Highly recommend to everyone!"), arrayOf("Terrible experience. Would not recommend to anyone.") ) // Style review text cells for (i in 6..13) { if ((i - 6) % 2 == 0) { sheet.getRange("A$i").interior.color = Color.FromArgb(242, 242, 242) } sheet.getRange("A$i").borders.lineStyle = BorderLineStyle.Thin sheet.getRange("A$i").borders.color = Color.FromArgb(200, 200, 200) sheet.getRange("A$i").wrapText = true } // Apply AI sentiment formula sheet.getRange("B6").formula2 = "=AI.TEXTSENTIMENT(A6:A13,\"Positive\",\"Negative\",\"Neutral\")" // Style sentiment results with basic formatting for (i in 6..13) { sheet.getRange("B$i").font.bold = true sheet.getRange("B$i").font.size = 11.0 sheet.getRange("B$i").horizontalAlignment = HorizontalAlignment.Center sheet.getRange("B$i").borders.lineStyle = BorderLineStyle.Medium sheet.getRange("B$i").borders.color = Color.FromArgb(200, 200, 200) } // ============ Add Conditional Formatting for Sentiment Results ============ // Positive sentiment - Green val positiveCondition = sheet.getRange("B6:B13").formatConditions.add( FormatConditionType.CellValue, FormatConditionOperator.Equal, "=\"Positive\"", null ) as IFormatCondition positiveCondition.interior.color = Color.FromArgb(226, 239, 218) positiveCondition.font.color = Color.FromArgb(0, 128, 0) // Negative sentiment val negativeCondition = sheet.getRange("B6:B13").formatConditions.add( FormatConditionType.CellValue, FormatConditionOperator.Equal, "=\"Negative\"", null ) as IFormatCondition negativeCondition.interior.color = Color.FromArgb(255, 199, 206) negativeCondition.font.color = Color.FromArgb(192, 0, 0) // Neutral sentiment val neutralCondition = sheet.getRange("B6:B13").formatConditions.add( FormatConditionType.CellValue, FormatConditionOperator.Equal, "=\"Neutral\"", null ) as IFormatCondition neutralCondition.interior.color = Color.FromArgb(255, 242, 204) neutralCondition.font.color = 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.pageSetup.fitToPagesTall = 1 sheet.pageSetup.fitToPagesWide = 1 sheet.pageSetup.isPercentScale = false sheet.pageSetup.orientation = PageOrientation.Landscape // Save to a pdf file workbook.save("TextSentiment.pdf")