Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set Author name to excel file using poi

Tags:

I'm creating an excel (.xlsx) file using poi (java). After I create the excel file I see the excel file Author as "Apache POI". Is there any way to change that?

Here is the code I'm using to create excel file...

import java.io.FileOutputStream;  import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;  public class CreateExcelFile {      public static void main(String[] args) {         /** Name of excel file that we are going to create **/         String fileName = "C:\\temp\\testPOIWrite.xlsx";         writeDataToExcelFile(fileName);     }      /** This method writes data to new excel file **/     private static void writeDataToExcelFile(String fileName) {          String[][] excelData = preapreDataToWriteToExcel();          XSSFWorkbook myWorkBook = new XSSFWorkbook();         Sheet mySheet = myWorkBook.createSheet();         Row myRow = null;         Cell myCell = null;          for (int rowNum = 0; rowNum < excelData[0].length; rowNum++) {             myRow = mySheet.createRow(rowNum);              for (int cellNum = 0; cellNum < 4; cellNum++) {                 myCell = myRow.createCell(cellNum);                 myCell.setCellValue(excelData[rowNum][cellNum]);             }         }          try {             FileOutputStream out = new FileOutputStream(fileName);             myWorkBook.write(out);             out.flush();             out.close();         } catch (Exception e) {             e.printStackTrace();         }      }      /** Prepare some demo data as excel file content **/     public static String[][] preapreDataToWriteToExcel() {         String[][] excelData = new String[4][4];         excelData[0][0] = "First Name";         excelData[0][1] = "Last Name";         excelData[0][2] = "Telephone";         excelData[0][3] = "Address";          excelData[1][0] = "Kushal";         excelData[1][1] = "Paudyal";         excelData[1][2] = "000-000-0000";         excelData[1][3] = "IL,USA";          excelData[2][0] = "Randy";         excelData[2][1] = "Ram Robinson";         excelData[2][2] = "111-111-1111";         excelData[2][3] = "TX, USA";          excelData[3][0] = "Phil";         excelData[3][1] = "Collins";         excelData[3][2] = "222-222-2222";         excelData[3][3] = "NY, USA";          return excelData;      } } 
like image 885
user1430989 Avatar asked Jun 21 '12 17:06

user1430989


People also ask

What is XSSF and HSSF?

Overview. HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (. xlsx) file format. HSSF and XSSF provides ways to read spreadsheets create, modify, read and write XLS spreadsheets.

How do I use XSSFWorkbook?

Create an XSSFSheet from an existing sheet in the XSSFWorkbook. Create an XSSFSheet from an existing sheet in the XSSFWorkbook. Save the content in the underlying package part. Returns the workbook's data format table (a factory for creating data format strings).


2 Answers

It's pretty straightforward:

HSSF:

SummaryInformation summaryInfo = workbook.getSummaryInformation(); summaryInfo.setAuthor(author); 

XSSF:

POIXMLProperties xmlProps = workbook.getProperties();     POIXMLProperties.CoreProperties coreProps =  xmlProps.getCoreProperties(); coreProps.setCreator(author); 

Have fun :)

like image 112
Olivier Coilland Avatar answered Oct 23 '22 02:10

Olivier Coilland


Not a direct answer but in case anyone needs to do this in NPOI (the .NET port of POI) here is the extension method I came up with ... it's basically what Olivier suggested - only implemented in C#:

/// <summary> /// Sets the author of this workbook. /// </summary> /// <param name="workbook"></param> /// <param name="author"></param> public static void SetAuthor(this IWorkbook workbook, string author) {     if (workbook is NPOI.XSSF.UserModel.XSSFWorkbook)     {         var xssfWorkbook = workbook as NPOI.XSSF.UserModel.XSSFWorkbook;         var xmlProps = xssfWorkbook.GetProperties();         var coreProps = xmlProps.CoreProperties;         coreProps.Creator = author;         return;     }      if (workbook is NPOI.HSSF.UserModel.HSSFWorkbook)     {         var hssfWorkbook = workbook as NPOI.HSSF.UserModel.HSSFWorkbook;         var summaryInfo = hssfWorkbook.SummaryInformation;          if (summaryInfo != null)         {             summaryInfo.Author = author;             return;         }          var newDocInfo = NPOI.HPSF.PropertySetFactory.CreateDocumentSummaryInformation();          var newInfo = NPOI.HPSF.PropertySetFactory.CreateSummaryInformation();         newInfo.Author = author;          hssfWorkbook.DocumentSummaryInformation = newDocInfo;         hssfWorkbook.SummaryInformation = newInfo;          return;     } } 
like image 41
mfeineis Avatar answered Oct 23 '22 04:10

mfeineis