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(); 

  • Modifica di layout di Excel con Visual Studio (SSIS preferito)
  • La barra di avanzamento dei problemi viene eseguita fino al completamento del process (caricamento di un file nel database)
  • Debug di differenze Excel VSTO tra sviluppo e distribuzione
  • Come posso impostare un plugin VSTO (Excel) utilizzando il tool di Visual Studio?
  • Il gestore di connessione di Excel non riesce in SSIS 2012
  • Esportzione di dati in file Excel da SQL Server 2014 utilizzando SSIS 2012
  • Visual Studio 2012: Come aprire un file excel associato al mio progetto?
  • Apertura di un file Excel tramite C # e scrittura di dati
  • One Solution collect form web for “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.

    Microsoft Office Excel Spreadsheet è il miglior software di Office, Excel VBA e formule Excel rendono il foglio di calcolo più veloce.