Zain -Ul- Arifeen Ответов: 1

Как создать многоуровневый список из текста в C# экспорт в MS word


Как создать многоуровневый список из текста в c# экспорт в MS Word
Как в следующем примере:

1) Ибрагим был одним из _ _ _ _ мужчин.
Мудрость
Б) более мудрый
В) мудрее
Г) самый мудрый

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

string fileName = file;
           using (RichEditDocumentServer server = new RichEditDocumentServer())
           {
               Document document = server.Document;

               //Append the first line
               DocumentRange newRange = document.AppendText("");

               //Change the range's format options
               CharacterProperties characterProperties = document.BeginUpdateCharacters(newRange);
               characterProperties.ForeColor = Color.Black;
               characterProperties.FontSize = 11;
               characterProperties.FontName = "Calibri";
               characterProperties.Italic = false;

               document.EndUpdateCharacters(characterProperties);






               string[] items = memo;
               string finalitems = "";
               for (int i = 0; i < items.Length; i++)
               {

                   string gg = items[i].ToString();
                   string[] h = gg.Split(')');
                   string bb = h[0].ToString();
                   if (bb != "")
                   {
                       int n;
                       bool isNumeric = int.TryParse(h[0].ToString(), out n);
                       if (isNumeric == true)
                       {
                           finalitems = finalitems + gg + '\r';
                       }
                       else
                       {
                           if (bb != "A" && bb != "B" && bb != "C" && bb != "D")
                           {
                               finalitems = finalitems + '\t' + gg + '\r';
                           }
                           else
                           {
                               if (bb == "A")
                               {
                                   finalitems = finalitems + '\t' + gg + '\r';
                               }
                               if (bb == "B")
                               {
                                   finalitems = finalitems + '\t' + gg + '\r';
                               }
                               if (bb == "C")
                               {
                                   finalitems = finalitems + '\t' + gg + '\r';
                               }
                               if (bb == "D")
                               {
                                   finalitems = finalitems + '\t' + gg + '\r';
                               }
                           }
                       }
                   }

               }



               document.Sections[0].Page.PaperKind = System.Drawing.Printing.PaperKind.Legal;

               document.Unit = DevExpress.Office.DocumentUnit.Inch;
               // Get the first section in a document
               Section firstSection = document.Sections[0];
               // Create columns and apply them to the document
               SectionColumnCollection sectionColumnsLayout =
                   firstSection.Columns.CreateUniformColumns(firstSection.Page, 0.2f, 2);
               firstSection.Columns.SetColumns(sectionColumnsLayout);


               document.AppendText(finalitems.ToString());

               server.SaveDocument(txtfolder.EditValue.ToString()+"\\"+ fileName+".docx", DocumentFormat.OpenXml);

1 Ответов

Рейтинг:
2

BillWoodruff

Мне кажется, что единственное изменение, которое вы вносите в каждую строку в memo [], - это добавление вкладки a после ')' Может ли решение быть таким простым:

private string data = @"1) Ibrahim was one of the ____ men.
A) wise
B) more wise
C) wiser
D) wisest";

data = data.Replace(") ", ")\t");
Не все так просто ? Вы можете использовать StringBuilder, чтобы уменьшить количество созданных строк:
private string[] splitString = new string[] {")", Environment.NewLine};

string const insertText = ")\t";

var splitdata = data.Split(splitString, StringSplitOptions.RemoveEmptyEntries); 

StringBuilder sb = new StringBuilder();

for (int i = 0; i < splitdata.Length; i += 2)
{
    sb.AppendLine(splitdata[i] + insertText + splitdata[i + 1]);
}

string processeddata = sb.ToString();