2015-06-17 7 views
2

Я генерирую документ Word, используя Aspose.Words (режим оценки) для .Net в который я строю таблицу следующим образомТаблица в документе Word с n столбцами в соответствии с размером страницы и разрешить обрезанные столбцы разбивать страницу с помощью Aspose.words для .Net

Document doc = new Document(); 
    DocumentBuilder builder = new DocumentBuilder(doc); 
    Table table = builder.StartTable(); 
    for (int i = 0; i < 5; i++) 
    { 
     for(int j = 0; j < 20; j++) 
     { 
      builder.InsertCell(); 
      builder.Write("Column : "+ j.toString()); 
     } 
    builder.EndRow(); 
    } 
    builder.EndTable(); 
    doc.Save(ms, Aspose.Words.Saving.SaveOptions.CreateSaveOptions(SaveFormat.Doc)); 
    FileStream file = new FileStream(@"c:\NewDoc.doc", FileMode.Create, FileAccess.Write); 
    ms.WriteTo(file); 
    file.Close(); 
    ms.Close(); 

Теперь этот код дает следующее слово файл с невидимыми колоннами, он должен дать 20 столбцов

Table with truncated columns .

Есть ли способ разбить невидимые столбцы на следующую страницу?

ответ

0

Строки могут перейти на следующую страницу, а не в столбцы, это поведение Microsoft Word. Вы можете изменить дизайн и форматирование документа, чтобы все столбцы были видны. Ниже приведены несколько указателей.

  1. Уменьшение полей страницы (слева и справа)
  2. Сделать ячейки фиксированной ширины. Таким образом, текст внутри каждой ячейки будет разбиваться вниз, если будет найдено больше символов.
  3. Измените ориентацию на пейзаж, у вас будет более широкая страница.

Проверьте соответствующие статьи и образец кода на Aspose.Words documentation website.

Попробуйте обновленный пример кода ниже:

string dst = dataDir + "table.doc"; 

Aspose.Words.Document doc = new Aspose.Words.Document(); 
DocumentBuilder builder = new DocumentBuilder(doc); 

// Set margins 
doc.FirstSection.PageSetup.LeftMargin = 10; 
//doc.FirstSection.PageSetup.TopMargin = 0; 
doc.FirstSection.PageSetup.RightMargin = 10; 
//doc.FirstSection.PageSetup.BottomMargin = 0; 

// Set oriantation 
doc.FirstSection.PageSetup.Orientation = Aspose.Words.Orientation.Landscape; 

Aspose.Words.Tables.Table table = builder.StartTable(); 

for (int i = 0; i < 5; i++) 
{ 
    for (int j = 0; j < 20; j++) 
    { 
     builder.InsertCell(); 
     // Fixed width 
     builder.CellFormat.Width = ConvertUtil.InchToPoint(0.5); 
     builder.Write("Column : " + j); 
    } 
    builder.EndRow(); 
} 
builder.EndTable(); 

// Set table auto fit behavior to fixed width columns 
table.AutoFit(AutoFitBehavior.FixedColumnWidths); 

doc.Save(dst, Aspose.Words.Saving.SaveOptions.CreateSaveOptions(Aspose.Words.SaveFormat.Doc)); 

Я работаю с Aspose как разработчика евангелист.

+0

Хорошее решение, но в моем случае я не могу создавать ячейки с фиксированной шириной, ширина ячейки будет меняться в соответствии с длиной символа заголовка столбца, можно ли разбить столбцы на следующую страницу вручную? –

+0

Столбцы не могут перейти на следующую страницу. Вы можете разделить его на две таблицы. Создайте первую таблицу, добавьте разрыв страницы и создайте вторую таблицу. –