Comment pouvez-vous ajouter l'habillage du texte d'une cellule à l'aide d'OpenXml lors de la création de fichiers excel?
Comment pouvez-vous définir le format d'une cellule de texte pour envelopper lors de la génération .xlsx fichiers avec OpenXml? Voici le code que j'ai actuellement:
public void Excel()
{
var viewModel = new RequirementIndexData();
viewModel.Requirements = db.Requirement;
MemoryStream ms = new MemoryStream();
SpreadsheetDocument dc = SpreadsheetDocument.Create(ms, SpreadsheetDocumentType.Workbook);
WorkbookPart mdp = dc.AddWorkbookPart();
WorksheetPart wsp = mdp.AddNewPart<WorksheetPart>();
Workbook wb = new Workbook();
FileVersion fv = new FileVersion();
fv.ApplicationName = "Microsoft Office Excel";
Worksheet ws = new Worksheet();
SheetData sd = new SheetData();
Columns columns = new Columns();
columns.Append(CreateColumnData(1, 1, 95));
ws.Append(columns);
Row r1 = new Row() { RowIndex = (UInt32Value)1u };
Cell c1 = new Cell();
c1.DataType = CellValues.SharedString;
c1.CellValue = new CellValue(OpenSoft.AgileAnalytics.EF.App_LocalResources.GlobalRes.VersionNumber + " " + viewModel.Requirements.OrderBy(r => r.CreatedOn).Select(r => r.CurentVersion).First().ToString());
r1.Append(c1);
sd.Append(r1);
for (int i = 2; i < viewModel.Requirements.Count() + 2; i++)
{
Row row2;
row2 = new Row()
{
RowIndex = (UInt32)i,
Height = 25,
DyDescent = 1.50D,
Hidden = false,
Collapsed = false
};
Cell cell2 = new Cell() { StyleIndex = Convert.ToUInt32(1) };
cell2.DataType = CellValues.SharedString;
cell2.CellValue = new CellValue((i - 1).ToString() + ". " + viewModel.Requirements.OrderBy(r => r.CreatedOn).Select(r => r.Definition).ElementAt(i - 2).ToString());
row2.Append(cell2);
sd.Append(row2);
}
ws.Append(sd);
wsp.Worksheet = ws;
wsp.Worksheet.Save();
Sheets sheets = new Sheets();
Sheet sheet = new Sheet();
sheet.Name = "specification1";
sheet.SheetId = 1;
sheet.Id = mdp.GetIdOfPart(wsp);
sheets.Append(sheet);
wb.Append(fv);
wb.Append(sheets);
dc.WorkbookPart.Workbook = wb;
dc.WorkbookPart.Workbook.Save();
dc.Close();
string filename = "specification1.xlsx";
Response.Clear();
byte[] dt = ms.ToArray();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
Response.BinaryWrite(dt);
Response.End();
}
private WorkbookStylesPart AddStyleSheet(SpreadsheetDocument spreadsheet)
{
WorkbookStylesPart stylesheet = spreadsheet.WorkbookPart.AddNewPart<WorkbookStylesPart>();
Stylesheet workbookstylesheet = new Stylesheet();
//<Fonts>
Font font0 = new Font(); //Default font
Fonts fonts = new Fonts(); //<APENDING Fonts>
fonts.Append(font0);
//<Fills>
Fill fill0 = new Fill(); //Default fill
Fills fills = new Fills(); //<APENDING Fills>
fills.Append(fill0);
//<Borders>
Border border0 = new Border(); //Defualt border
Borders borders = new Borders(); //<APENDING Borders>
borders.Append(border0);
//<CellFormats>
CellFormat cellformat0 = new CellFormat() { FontId = 0, FillId = 0, BorderId = 0 }; //Default style : Mandatory
CellFormat cellformat1 = new CellFormat(new Alignment() { WrapText = true }); //Style with textwrap set
//<APENDING CellFormats>
CellFormats cellformats = new CellFormats();
cellformats.Append(cellformat0);
cellformats.Append(cellformat1);
//Append FONTS, FILLS , BORDERS & CellFormats to stylesheet <Preserve the ORDER>
workbookstylesheet.Append(fonts);
workbookstylesheet.Append(fills);
workbookstylesheet.Append(borders);
workbookstylesheet.Append(cellformats);
//Finalize
stylesheet.Stylesheet = workbookstylesheet;
stylesheet.Stylesheet.Save();
return stylesheet;
}
OriginalL'auteur | 2015-02-17
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de définir des styles pour cette. Les Styles sont définis à l'intérieur d'une feuille de style. Chaque style a un ID et lorsque vous créez des Cellules vous pouvez vous référer style défini ID.
La définition de la feuille de style dans une feuille de calcul :
Maintenant, lorsque vous ajoutez les cellules utilisent le définit le style de l'ID comme suit :
EDIT : Vous devez ajouter la feuille de style d'après l'ajout de workbookpart..
"In the book "specitication.xlsx" found content that could not be read. Try to restore the contents of the book? If you trust the source of this workbook, click "Yes"."
Si vous sélectionnez "Non", le document ne s'ouvre pas. Si vous choisissez "Oui", puis ouvre le document sans style.Avez-vous eu ce problème auparavant ? Ou s'agit-il se produire après l'ajout des styles
Ce message s'affiche après l'ajout de modifications. - Je ajouter de la feuille de style après l'ajout de workbookpart. Je peux insérer des changements de code, mais je pense que c'est trop
C'est la seule manière 🙂 en Fait, si vous avez besoin d'ajouter des styles, vous devez définir tous ces code .. Et que vous définissez une seule fois, donc rien à craindre [le bon] .. btw code fonctionne très bien.. Ne vous en faites un bon usage de Stylde ID d'index ?? Vérifiez s'il vous plaît
Ne pouvait pas obtenir que cela fonctionne, soit je suis ajouter dans la feuille de style au mauvais moment, ou l'ID est faux (d'où vous définir ce?). Serait bien d'avoir un exemple complet que le code des détails n'est jamais appelé dans l'énoncé du problème
OriginalL'auteur Kavindu Dodanduwa
OriginalL'auteur Udeesh S B