2009-07-24 3 views
29

Я хочу создать файл Excel и записать данные так же, как писать текстовый файл с Java. Я попытался изменить расширение файла с .txt на .xls. Но я хочу выделение жирным шрифтом в файле Excel. Как я могу это сделать?Создать файл Excel в Java

Я пробовал использовать JXL API, но каждый раз, когда мне нужно создать ярлык, я хочу добавить метку. Невозможно O изменить строку и столбец таблицы?

+0

Что вы используете для создания превосходства? можете ли вы показать свой код? – Maksim

ответ

28

Вы можете использовать Apache POI для создания собственных двоичных файлов xls.

Или вы можете использовать JExcelApi, что является еще одним, и, насколько я помню, небольшим весом, библиотекой Java для Excel.

3

Изменение расширения файла делает не в любом случае изменяет его содержимое. Расширение - это просто ярлык.

Если вы хотите работать с электронными таблицами Excel с использованием Java, прочитайте в библиотеке Apache POI.

0

Я использовал также JXLS: он получает данные как карту и шаблон EXCEL с правильным синтаксисом и возвращает правильно заполненный файл. Данные в каждой ячейке должны быть JavaBean с видимостью общественный.

Не волнуйтесь, если вы должны вставить данные в более чем 1 лист: в этом случае я использовал POI.

3

Плоские файлы не позволяют предоставлять метаинформацию.

Я бы предложил написать таблицу HTML, содержащую нужную вам информацию, и позволить Excel читать ее. Затем вы можете использовать теги <b>, чтобы сделать то, что вы просите.

0

Чтобы создать таблицу и отформатировать ячейку с помощью POI см Working with Fonts пример, и использование:

font.setBoldweight(Font.BOLDWEIGHT_BOLD); 

POI работает очень хорошо. Есть некоторые вещи, которые вы не можете сделать (например, создавать макросы VBA), но он будет читать/писать электронные таблицы с помощью макросов, поэтому вы можете создать подходящую таблицу шаблонов, прочитать ее и обработать с помощью POI, а затем записать ее.

8

Справедливое предупреждение о поколении Apache POI в Excel ... (я знаю, что это старый пост, но это важно в случае, если кто-то смотрит это снова, как я только что сделал)

Это была проблема утечки памяти, который предположительно был решен к 2006 году, но которые люди совсем недавно переживали. Если вы хотите автоматизировать генерацию большого количества excel (то есть, если вы хотите создать одиночный, большой файл, большое количество небольших файлов или и то, и другое), я бы рекомендовал использовать другой API. Либо это, либо увеличивая размер стека JVM до абсурдных пропорций, и, возможно, заглядывая в интернированные строки, если вы знаете, что на самом деле вы не будете работать со многими разными строками (хотя, конечно, интернирование строк означает, что если у вас есть большое количество разные строки, у вас будет совсем другая проблема с программной ошибкой памяти. Поэтому подумайте, прежде чем идти по этому маршруту).

+4

Теперь в 2015 году и интересовался использованием Apache POI, но у вас возникли сомнения из-за вашего опыта, однако он просто хотел поделиться этим вопросом [FAQ] (https://poi.apache.org/faq.html#faq-N10109) на своем сайт, который, как я думал, может иметь отношение к устранению подобных проблем. – Hesham

+0

@ Ссылка Хешама больше не ссылается на конкретный вопрос. [Этот] (https://poi.apache.org/faq.html#faq-N10165) и [этот] (https://poi.apache.org/faq.html#faq-N1023C) кажутся актуальными. – Evan

61
//Find jar from here "http://poi.apache.org/download.html" 
import java.io.*; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFCell; 

public class CreateExlFile{ 
    public static void main(String[]args) { 
     try { 
      String filename = "C:/NewExcelFile.xls" ; 
      HSSFWorkbook workbook = new HSSFWorkbook(); 
      HSSFSheet sheet = workbook.createSheet("FirstSheet"); 

      HSSFRow rowhead = sheet.createRow((short)0); 
      rowhead.createCell(0).setCellValue("No."); 
      rowhead.createCell(1).setCellValue("Name"); 
      rowhead.createCell(2).setCellValue("Address"); 
      rowhead.createCell(3).setCellValue("Email"); 

      HSSFRow row = sheet.createRow((short)1); 
      row.createCell(0).setCellValue("1"); 
      row.createCell(1).setCellValue("Sankumarsingh"); 
      row.createCell(2).setCellValue("India"); 
      row.createCell(3).setCellValue("[email protected]"); 

      FileOutputStream fileOut = new FileOutputStream(filename); 
      workbook.write(fileOut); 
      fileOut.close(); 
      System.out.println("Your excel file has been generated!"); 

     } catch (Exception ex) { 
      System.out.println(ex); 
     } 
    } 
} 
+0

Привет, это создало для меня двоичный файл. как я могу создать файл excel, который я могу открыть с помощью Excel? – Dejell

+0

Небольшой вопрос здесь - почему вы бросаете значение int в HSSFSheet.createRow на короткий? API принимает int. –

3

Я создал API для создания файла Excel более легко.

Create Excel - Creating Excel from Template

Просто установите необходимые значения инстанцирования затем вызвать Execute(), то он будет создан на основе нужного каталога продукции.

Но прежде чем использовать это, вы должны иметь шаблон Excel, который будет использоваться в качестве шаблона только что созданного файла Excel.

Кроме того, вам нужен Apache POI в пути к вашему проекту.

+0

greate job @Erieze Lagera. спасибо –

+0

У вас есть другие инструменты для создания pdf, csv ...? –

+0

@PashaGharibi Вы можете попробовать [JasperReports] (https://community.jaspersoft.com/) для создания PDF-файла. У него есть IDE для создания шаблона отчета. [Jaspersoft Studio] (https://community.jaspersoft.com/project/jaspersoft-studio/releases) –

3
File fileName = new File(".....\\Fund.xlsx"); 

public static void createWorkbook(File fileName) throws IOException { 
    try { 
     FileOutputStream fos = new FileOutputStream(fileName); 
     XSSFWorkbook workbook = new XSSFWorkbook();    

     XSSFSheet sheet = workbook.createSheet("fund"); 

     Row row = sheet.createRow(0); 
     Cell cell0 = row.createCell(0); 
     cell0.setCellValue("Nav Value"); 

     Cell cell1 = row.createCell(1); 

     cell1.setCellValue("Amount Change");  

     Cell cell2 = row.createCell(2); 
     cell2.setCellValue("Percent Change"); 

     workbook.write(fos); 
     fos.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

Как я могу увидеть это существование файла. Я работаю над этим с утра, но не использую. пожалуйста, помогите мне. –

Смежные вопросы