Как считать и записать файл Excel

См. мой ответ на подобный вопрос , того, как установить опцию "Wake the computer to run this task...", которая только доступна из Планировщика задач UI (и через XML), а не schtasks.exe /create командная строка.

основные детали его:

  1. Создают Вашу задачу через schtasks.exe /create /tn MyTask ...
  2. Экспорт Ваша задача к XML через schtasks.exe /query /xml /tn MyTask > MyTask.xml
  3. Обновление этот XML через XSLT или поиск/замену
  4. Переимпорт (перезаписывающий старую задачу) через schtasks.exe /create /tn MyTask /xml MyTask.xml /f

, Детали здесь .

164
задан Paolo Forgia 31 August 2017 в 07:01
поделиться

6 ответов

Если вам нужно сделать что-то еще с офисными документами на Java, выберите POI, как указано.

Для простого чтения / записи документа Excel, как вы просили, вы можете использовать формат CSV (также как упоминалось):

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class CsvWriter {
 public static void main(String args[]) throws IOException {

  String fileName = "test.xls";

  PrintWriter out = new PrintWriter(new FileWriter(fileName));
  out.println("a,b,c,d");
  out.println("e,f,g,h");
  out.println("i,j,k,l");
  out.close();

  BufferedReader in = new BufferedReader(new FileReader(fileName));
  String line = null;
  while ((line = in.readLine()) != null) {

   Scanner scanner = new Scanner(line);
   String sep = "";
   while (scanner.hasNext()) {
    System.out.println(sep + scanner.next());
    sep = ",";
   }
  }
  in.close();
 }
}
-1
ответ дан 23 November 2019 в 21:13
поделиться

.csv или POI определенно подойдут, но вам следует знать о JExcel Энди Хана. Я считаю, что это лучшая библиотека Java для работы с Excel из существующих.

9
ответ дан 23 November 2019 в 21:13
поделиться

Попробуйте Apache POI HSSF . Вот пример того, как читать файл Excel:

try {
    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row;
    HSSFCell cell;

    int rows; // No of rows
    rows = sheet.getPhysicalNumberOfRows();

    int cols = 0; // No of columns
    int tmp = 0;

    // This trick ensures that we get the data properly even if it doesn't start from first few rows
    for(int i = 0; i < 10 || i < rows; i++) {
        row = sheet.getRow(i);
        if(row != null) {
            tmp = sheet.getRow(i).getPhysicalNumberOfCells();
            if(tmp > cols) cols = tmp;
        }
    }

    for(int r = 0; r < rows; r++) {
        row = sheet.getRow(r);
        if(row != null) {
            for(int c = 0; c < cols; c++) {
                cell = row.getCell((short)c);
                if(cell != null) {
                    // Your code here
                }
            }
        }
    }
} catch(Exception ioe) {
    ioe.printStackTrace();
}

На странице документации у вас также есть примеры того, как писать в файлы Excel.

138
ответ дан 23 November 2019 в 21:13
поделиться

Достаточно простого CSV-файла

4
ответ дан 23 November 2019 в 21:13
поделиться

Apache POI может сделать это за вас. В частности, модуль HSSF . Краткое руководство очень полезно. Вот как сделать то, что вы хотите, - а именно создать лист и записать его.

Workbook wb = new HSSFWorkbook();
//Workbook wb = new XSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");

// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow((short)0);
// Create a cell and put a value in it.
Cell cell = row.createCell(0);
cell.setCellValue(1);

// Or do it on one line.
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue(
createHelper.createRichTextString("This is a string"));
row.createCell(3).setCellValue(true);

// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
49
ответ дан 23 November 2019 в 21:13
поделиться

Вы также можете рассмотреть JExcelApi . Я считаю, что это лучше, чем POI. Там'

14
ответ дан 23 November 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: