如何使用poi将作者名称设置为excel文件

我正在使用poi(java)创建一个excel(.xlsx)文件。 创建excel文件后,我将excel文件Author视为“Apache 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; } } 

这很简单:

HSSF:

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

XSSF:

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

玩的开心 :)

不是直接的答案,但如果有人需要在NPOI(POI的.NET端口)中执行此操作,这里是我提出的扩展方法……它基本上是Olivier建议的 – 只在C#中实现:

 ///  /// Sets the author of this workbook. ///  ///  ///  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; } }