Avatar billede OBS Juniormester
Oprettet i går kl. 17:14 Der er 2 kommentarer

eclipse

Jeg prøver at importere:  java
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook; som jeg kan bruge i eclipse, dog uden held. Jeg har download-ed apache-poi-src 5.4.1-20250401.
Avatar billede arne_v Ekspert
Skrevet i går kl. 17:25 #1
Du skal nok have BIN ZIP ikke SRC ZIP.

Udpak BIN ZIP og tilføj alle jar til classpath i Eclipse.
Avatar billede arne_v Ekspert
Skrevet i går kl. 19:52 #2
Jeg hentede:
  poi-bin-5.2.3-20220909.zip

Puttede alle jar filer i classpath i Eclipse.

Og så virkede:


import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xddf.usermodel.chart.ChartTypes;
import org.apache.poi.xddf.usermodel.chart.LegendPosition;
import org.apache.poi.xddf.usermodel.chart.XDDFCategoryDataSource;
import org.apache.poi.xddf.usermodel.chart.XDDFChartData;
import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory;
import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class GenXslx {
    public static class Order {
        private int id;
        private String customer;
        private String status;
        private double totalPrice;
        public Order(int id, String customer, String status, double totalPrice) {
            this.id = id;
            this.customer = customer;
            this.status = status;
            this.totalPrice = totalPrice;
        }
        public int getId() {
            return id;
        }
        public String getCustomer() {
            return customer;
        }
        public String getStatus() {
            return status;
        }
        public double getTotalPrice() {
            return totalPrice;
        }
    }
    private static XSSFCell createCell(XSSFRow rowobj, int colix, XSSFCellStyle style) {
        XSSFCell c = rowobj.createCell(colix);
        c.setCellStyle(style);
        return c;
    }
    public static void main(String[] args) throws IOException {
        List<Order> data = new ArrayList<Order>();
        data.add(new Order(1, "A", "Delivered", 10.00));
        data.add(new Order(2, "B", "Delivered", 40.00));
        data.add(new Order(3, "C", "Delivered", 35.00));
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet();
        XSSFCellStyle headerstyle = workbook.createCellStyle();
        headerstyle.setFillForegroundColor(IndexedColors.PALE_BLUE.index);
        headerstyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        XSSFCellStyle amountstyle = workbook.createCellStyle();
        amountstyle.setDataFormat(workbook.createDataFormat().getFormat("#,##0.00"));
        int row = 0;
        XSSFRow headerrow = sheet.createRow(row);
        createCell(headerrow, 0, headerstyle).setCellValue("Order");
        createCell(headerrow, 1, headerstyle).setCellValue("Customer");
        createCell(headerrow, 2, headerstyle).setCellValue("Status");
        createCell(headerrow, 3, headerstyle).setCellValue("Total");
        row++;
        for(Order o : data) {
            XSSFRow datarow = sheet.createRow(row);
            datarow.createCell(0).setCellValue(o.id);
            datarow.createCell(1).setCellValue(o.customer);
            datarow.createCell(2).setCellValue(o.status);
            datarow.createCell(3).setCellValue(o.totalPrice);
            row++;
        }
        XSSFRow datarow = sheet.createRow(row);
        datarow.createCell(0).setCellValue("Total");
        createCell(datarow, 3, amountstyle).setCellFormula(String.format("SUM(D%d:D%d)", row - data.size() + 1, row));
        row++;
        XSSFDrawing drawing = sheet.createDrawingPatriarch();
        XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, row, 3, row + 9);
        XSSFChart chart = drawing.createChart(anchor);
        XDDFChartLegend legend = chart.getOrAddLegend();
        legend.setPosition(LegendPosition.TOP_RIGHT);
        XDDFCategoryDataSource  cat = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(row - data.size() - 1, row - 2, 1, 1));
        XDDFNumericalDataSource<Double>  val = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(row - data.size() - 1, row - 2, 3, 3));
        XDDFChartData piedata = chart.createData(ChartTypes.PIE, null, null);
        piedata.setVaryColors(true);
        piedata.addSeries(cat, val);
        chart.plot(piedata);
        OutputStream os = new FileOutputStream("/work/orders.xlsx");
        workbook.write(os);
        os.close();
        workbook.close();
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis