Come ottimizzare la colonna Excel utilizzando OpenXML Package

Questo codice per generare il foglio di calcolo di Excel utilizzando il pacchetto openxml. Per favore, qualcuno dirà come adattare automaticamente la sua width della colonna.

OpenXmlPackage.SpreadsheetDocument spreadsheetDocument = OpenXmlPackage.SpreadsheetDocument.Create(downloadFilePath, OpenXml.SpreadsheetDocumentType.Workbook); // Add a WorkbookPart to the document. OpenXmlPackage.WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); // Add a WorksheetPart to the WorkbookPart. workbookpart.Workbook = new OpenXmlSpreadsheet.Workbook(); int numDates = datesObject.Length; // Add Sheets to the Workbook. OpenXmlSpreadsheet.Sheets sheets = new OpenXmlSpreadsheet.Sheets(); OpenXml.UInt32Value sheetId = 1; OpenXmlPackage.WorksheetPart firstWorksheetPart = workbookpart.AddNewPart<OpenXmlPackage.WorksheetPart>(); firstWorksheetPart.Worksheet = new OpenXmlSpreadsheet.Worksheet(new OpenXmlSpreadsheet.SheetData()); // Append a new worksheet and associate it with the workbook. OpenXmlSpreadsheet.Sheet firstSheet = new OpenXmlSpreadsheet.Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(firstWorksheetPart), SheetId = sheetId, Name = "Summary" }; sheets.Append(firstSheet); sheetId++; OpenXmlSpreadsheet.SheetData firstSheetData = firstWorksheetPart.Worksheet.GetFirstChild<OpenXmlSpreadsheet.SheetData>(); DataTable summaryTable = new DataTable(); summaryTable.Clear(); summaryTable.Columns.Add("name"); summaryTable.Columns.Add("value"); DataRow _summaryInfo = summaryTable.NewRow(); _summaryInfo["name"] = "Clinic Name"; _summaryInfo["value"] = userInfo[0]; summaryTable.Rows.Add(_summaryInfo); int firstRowCount = summaryTable.Rows.Count; for (int rowNumber = 1; rowNumber <= firstRowCount; rowNumber++) { DataRow dataRow = summaryTable.Rows[rowNumber - 1]; OpenXmlSpreadsheet.Row contentRow = ExcelHandler.createContentRow(dataRow, rowNumber); firstSheetData.AppendChild(contentRow); } firstWorksheetPart.Worksheet.Save(); 

Solutions Collecting From Web of "Come ottimizzare la colonna Excel utilizzando OpenXML Package"

La logica di auto-fit è qualcosa che viene implementato da Microsoft Excel e non fa parte del formato del foglio di calcolo OpenXML. L'auto-fit comport la misurazione della width (o dell'altezza) del valore in ciascuna cella e la ricerca del valore massimo.

Per implementare l'auto-fit nel proprio codice, dovrai misurare manualmente il text; è ansible utilizzare TextRenderer.MeasureText o Graphics.MeasureString con i flag appropriati di formato (disabilitare i caratteri del prefisso). Questo ti darà una dimensione in pixel, che sarà necessario convertire in unità di width di colonna di colonna convuluted di Excel. La formula per questo è:

width = Truncate ([{Numero di caratteri} * {Larghezza cifre massima) + {5 imbottitura pixel}] / {Larghezza massima cifra} * 256) / 256

Tratto da questo articolo: Classe di colonne (DocumentFormat.OpenXml.Spreadsheet)

(La width massima del cifre può essere determinata misurando la width del carattere '0' usando il carattere predefinito della cartella di lavoro – ti ha detto che era contorto!)

Una volta ottenute le larghezze delle celle utilizzando questa formula, è ansible trovare il valore massimo e applicarlo alla properties; Column.Width .

Ci sono sottili differenze nel modo in cui Microsoft Excel rende il text (rispetto a come GDI / GDI + lo fa), quindi questo metodo non è al 100% accurato – ma è sufficiente per la maggior parte degli scopi e puoi sempre aggiungere qualche imbottitura aggiuntiva per garantire una corretta in forma.