pulimurukan Ответов: 0

Автоматический расчет ширины столбцов и перенос слов в заголовках не работает в OpenXML в Excel


В то время как я пытаюсь открыть файл excel с помощью OpenXML. Excel идет нормально, но мое свойство стиля не принимает.

1. Мне нужно дать моей колонке данных в Excel автоматическая ширина собственность.Я нашел это решение, но оно не работает для меня

https://stackoverflow.com/questions/18268620/openxml-auto-size-column-
ширина - в-excel



2.я не могу обернуть заголовки столбцов в слова, но значения оборачиваются


любая помощь или предложения очень ценятся!

Что я уже пробовал:

мой код excel, имеющий свойство width для установки


public static string OpenXMLCreateXL(string FolderPath, DataSet tableSet)
     {
     WorkbookPart wBookPart = null;
     var datetime = DateTime.Now.ToString().Replace("/", "_").Replace(":", "_");
      string FilePath = "";
       foreach (DataTable table1 in tableSet.Tables)
      {
      if (table1.Rows.Count != 0)
      {
      using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Create(FilePath, 
     SpreadsheetDocumentType.Workbook))
     {
     wBookPart = spreadsheetDoc.AddWorkbookPart();
    wBookPart.Workbook = new Workbook();
    uint sheetId = 1;
    spreadsheetDoc.WorkbookPart.Workbook.Sheets = new Sheets();
    Sheets sheets = spreadsheetDoc.WorkbookPart.Workbook.GetFirstChild();
    WorkbookStylesPart wbsp = wBookPart.AddNewPart();
    wbsp.Stylesheet = CreateStylesheet();
    wbsp.Stylesheet.Save();
     foreach (DataTable table in tableSet.Tables)
     {
     if (table.Rows.Count != 0)
     {
     table.TableName = table.Rows[0]["LeaseCondition"].ToString();
     WorksheetPart wSheetPart = wBookPart.AddNewPart();
     Sheet sheet = new Sheet() { Id = spreadsheetDoc.WorkbookPart.GetIdOfPart(wSheetPart), SheetId = 
    sheetId, Name = table.TableName };
    sheets.Append(sheet);
    SheetData sheetData = new SheetData();
    wSheetPart.Worksheet = new Worksheet();
    Row headerRow = new Row();
    Columns columns = new Columns();
    int ColumnNumber = 1;
      foreach (DataColumn column in table.Columns)
     {
       Cell cell = new Cell();
         cell.DataType = CellValues.String;
        cell.CellValue = new CellValue(column.ColumnName);
        cell.StyleIndex = 2;
        headerRow.AppendChild(cell);
        Column column1 = new Column();  
         column1.Width = 30; ;
       column1.BestFit = true;
        column1.CustomWidth = true;        //how i can set autowidth here?
       column1.Min = Convert.ToUInt32(ColumnNumber);
      column1.Max = Convert.ToUInt32(ColumnNumber);
      columns.AppendChild(column1);
       ColumnNumber = ColumnNumber + 1;
        }
         wSheetPart.Worksheet.AppendChild(columns);
         sheetData.AppendChild(headerRow);
         foreach (DataRow dr in table.Rows)
        {
       Row row = new Row();
      foreach (DataColumn column in table.Columns)
         {
      Cell cell = new Cell();
       cell.DataType = CellValues.String;
      cell.CellValue = new CellValue(dr[column].ToString());
       cell.StyleIndex = 1;
      row.AppendChild(cell);
    }
    sheetData.AppendChild(row);
      }
       sheetId++;
      wSheetPart.Worksheet.AppendChild(sheetData);
        }
        }
      }
      }
        }
         return FilePath;
         }



//My word-wrap code

           Alignment alignment0 = new Alignment();
            alignment0.WrapText = true;
            alignment0.Vertical = VerticalAlignmentValues.Top;
           

            CellFormats cellFormats = new CellFormats(
                    new CellFormat(new Alignment() { WrapText = true }), // default
                    new CellFormat { FontId = 0, FillId = 0, BorderId = 
          1,ApplyBorder = true, Alignment = alignment0, ApplyAlignment = true }, // 
         body
                    new CellFormat { FontId = 1, FillId = 2, BorderId = 1, ApplyFill 
           = true ,ApplyAlignment = true,} // header
                );</pre>

0 Ответов