如何设定作者名称中使用POI到excel文件(How to set Author name to e

2019-06-25 16:21发布

我创建使用POI(JAVA)的Excel(.xlsx)格式文件。 之后,我创建Excel文件,我看到Excel文件作者为“阿帕奇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;

    }
}

Answer 1:

这是非常简单的:

HSSF:

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

XSSF:

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

玩得开心 :)



Answer 2:

没有一个直接的答案,但万一有人需要为此在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;
    }
}


文章来源: How to set Author name to excel file using poi