2012-06-21 9 views
11

poi(java)を使用してExcel(.xlsx)ファイルを作成しています。私がexcelファイルを作成した後は、「Apache POI」というファイルを作成します。それを変える方法はありますか?ここで 設定方法poiを使用してファイルをExcelするための著者名

は、それは非常に簡単だ

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; 

    } 
} 

答えて

15

...私はExcelファイルを作成するために使用しているコードです:

HSSF:

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

XSSF:

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

楽しい:)

+0

xmlProps for XSSFを教えてください。 – user1430989

+0

ありがとう..私はそれを得た。 – user1430989

+0

こんにちはOlivier Coilland、XSSFの場合は、その良い働きをしています。しかし、HSSFの場合、SummaryInformation summaryInfo = workbook.getSummaryInformation(); summaryInfoがnullで、動作していません。 – user1430989

5

ない直接的な答えを持っていますが、場合には、誰もがここにNPOI(POIの.NETポート)でこれを行う必要があるが、私が思いついた拡張メソッドである...それは基本的に何オリヴィエです提案 - 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; 
    } 
} 
関連する問題