java 文件仅插入文件中的最后数据

标签 java excel jxl

package Reader;
        public class Write_Excel  {
            private WritableCellFormat timesBoldUnderline;
            private WritableCellFormat times;
            private String inputFile;
            Thread thread = new Thread();
            static String box, plc, hmi;
            int k=1,cnt=1;

    public void witeExcel(ArrayList<String> B,ArrayList<String> P, ArrayList<String> H)
                    throws WriteException, IOException {
                Write_Excel test = new Write_Excel();
                test.setOutputFile("C://Users//Tanmay//Desktop//Export.xls");
                for (int index = 0; index < B.size(); index++) {
                box = B.get(index);
                plc = P.get(index);
                hmi = H.get(index);

                test.write();
            }System.out.println("Please check the result file under C://Users//Tanmay//Desktop//Export.xls ");
            }

            public void setOutputFile(String inputFile) {
                this.inputFile = inputFile;
            }

            public void write() throws IOException, WriteException {
                File file = new File(inputFile);
                WorkbookSettings wbSettings = new WorkbookSettings();
                wbSettings.setLocale(new Locale("en", "EN"));
                WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
                workbook.createSheet("Serial Numbers", 0);
                WritableSheet excelSheet = workbook.getSheet(0);
                excelSheet.setColumnView(1, 15);
                excelSheet.setColumnView(2, 15);
                excelSheet.setColumnView(3, 15);
                createLabel(excelSheet);
                createContent(excelSheet);
                workbook.write();
                System.out.println("Value of k in close method is "+k);
                if(k==4) {
                    System.out.println("Condition Satisfied where value is "+k);
                    workbook.close();   
                }       
            }

            private void createLabel(WritableSheet sheet) throws WriteException {
                //System.out.println("In create label method");
                // Lets create a times font
                WritableFont times10pt = new WritableFont(WritableFont.ARIAL, 12);
                // Define the cell format
                times = new WritableCellFormat(times10pt);
                // Lets automatically wrap the cells
                times.setWrap(true);

                // create create a bold font with underlines
                WritableFont times10ptBoldUnderline = new WritableFont(
                        WritableFont.TIMES, 12, WritableFont.BOLD, false);
                timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
                // Lets automatically wrap the cells
                timesBoldUnderline.setWrap(false);

                CellView cv = new CellView();
                cv.setFormat(times);
                cv.setSize(20);
                cv.setFormat(timesBoldUnderline);

                // Write a few headers
                addCaption(sheet, 0, 0, "BOX");
                addCaption(sheet, 1, 0, "CPU");
                addCaption(sheet, 2, 0, "HMI");
                //System.out.println("Out create label method");
            }

            private void addCaption(WritableSheet sheet, int column, int row, String s)
                    throws RowsExceededException, WriteException {
                //System.out.println("In addCaption Method");
                Label label;
                label = new Label(column, row, s, timesBoldUnderline);
                sheet.addCell(label);
                //System.out.println("Out addCaption Method");
            }

            private void createContent(WritableSheet sheet) throws WriteException,
                    RowsExceededException {
                System.out.println("In createContent Method");
                    addLabel(sheet, 0, k, box);
                    addLabel(sheet, 1, k, plc);
                    addLabel(sheet, 2, k, hmi);
                    //System.out.println("Value of K is "+k);
                    System.out.println("Out createContent Method");
                    k++;
            }

            private void addLabel(WritableSheet sheet, int column, int row, String s)
                    throws WriteException, RowsExceededException {
                System.out.println("In Addlabel Method");
                Label label;
                label = new Label(column, row, s, times);
                System.out.println("Value of row is "+row+" Value of column is "+column+" Value string is "+s );
                sheet.addCell(label);
                System.out.println("Out addlabel Method");
            }
        }

我现在正在构建一个条形码读取应用程序,下面代码的问题是,当我在o/p中获取excel文件时,只有以表格格式获取的最后数据才能进入o/p中的excel文件。我需要一些建议,我哪里出错了,应该做什么。我已经使用 system.out.printlln(); 检查了所有内容但没有找到任何解决办法。

 Thanks in advance and double to one who helps to get right solution.

最佳答案

       public void witeExcel(ArrayList<String> B,ArrayList<String> P, ArrayList<String> H)
                throws WriteException, IOException {
             WorkbookSettings wbSettings = new WorkbookSettings();
            wbSettings.setLocale(new Locale("en", "EN"));
            WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
            workbook.createSheet("Serial Numbers", 0);

            Write_Excel test = new Write_Excel();
            test.setOutputFile("C://Users//Tanmay//Desktop//Export.xls");
            for (int index = 0; index < B.size(); index++) {
            box = B.get(index);
            plc = P.get(index);
            hmi = H.get(index);

            test.write(workbook);
        }System.out.println("Please check the result file under C://Users//Tanmay//Desktop//Export.xls ");
        }

将逻辑移至 for 循环之前创建工作簿

更改写入方法以传递工作簿

 public void write(WritableWorkbook workbook) throws IOException, WriteException {
            File file = new File(inputFile);


            WritableSheet excelSheet = workbook.getSheet(0);
        ................

关于java 文件仅插入文件中的最后数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24571132/

相关文章:

Java在数组中调用没有点符号的方法

java - 如何对集合中的两个不同对象进行排序?

java - 从 foreach 循环中删除其他 foreach 中的项目并使用相同的列表

excel - VBA中的动态文本框输入

JavaScript - 将 HTML 表格数据导出到 Excel

java - 将excel的特定列读取到java程序中

java - 使用 JExcelApi 将 BigInteger 写入 xls,格式为 $ 和 ,

java - 将值插入 mysql Java

python - 使用 openpyxl 编辑电子表格。无法写入单元格, "cell is read-only error"

JXL 单元格格式