2012-06-21 16 views
11

Poi (java) kullanarak bir excel (.xlsx) dosyası oluşturuyorum. Excel dosyasını oluşturduktan sonra excel dosyasını "Apache POI" olarak yazar görüyorum. Bunu değiştirmenin bir yolu var mı? İşte Poi kullanarak excel dosyasına Yazar adı nasıl ayarlanır

Oldukça basittir

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; 

    } 
} 

cevap

15

... Ben excel dosyası oluşturmak için kullanıyorum kodudur:

HSSF:

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

XSSF:

temelde neyi Olivier var ...

+0

XSSF için bu xmlProps nedir? – user1430989

+0

Teşekkür ederim .. Anladım. – user1430989

+0

Merhaba Olivier Coilland, XSSF'nin çalışması durumunda iyi. Ancak HSSF durumunda, SummaryInformation summaryInfo = workbook.getSummaryInformation(); summaryInfo boştur .. ve çalışmıyor .. – user1430989

5

değil doğrudan bir cevap :) Eğlenin ama durumda kimse burada NPOI (POI NET portuna) bu yapması gereken ben ile geldi uzatma yöntemidir önerilen - yalnızca 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; 
    } 
} 
İlgili konular