содержимое объединенной ячейки обрывается после разрыва страницы - PullRequest
0 голосов
/ 12 мая 2009

У меня есть программа vb .net, которая экспортирует информацию в определенные поля рабочей книги Excel с использованием именованных диапазонов. Один из названных диапазонов - это раздел заметок, который обрезается (не отображается и не печатается), если он выходит за пределы разрыва страницы. Я ищу способ динамически создавать новые именованные диапазоны для размещения всех текста заметок.

Некоторая другая информация:

  • Именованный диапазон представляет собой объединенную ячейку из A2: L36 с включенным переносом текста

  • Ширина столбца A составляет 31 единицу

  • Ширина столбцов от B до L - 8,38

  • Высота всех строк - 15,75 единиц

  • Я НЕ хочу печатать пустые страницы, изменять размер шрифта, отключать перенос текста, заставлять конечного пользователя выполнять какое-либо переформатирование или изменять размер ячеек, поскольку я пробовал эти подходы без успеха.

  • Использование Excel 2007

ПОМОГИТЕ ПОЖАЛУЙСТА!

Спасибо заранее! ~ Восьмой


прости мое невежество, я все еще n00b

Ответы [ 2 ]

1 голос
/ 22 мая 2009

Еще раз спасибо Lunatik за ваш ответ. Я смог найти приемлемый обходной путь до того, как увидел ваш последний пост. Это не самое изящное решение, но оно наиболее подходит для того, чего я пытался достичь. Я надеюсь, что это может пригодиться кому-то еще в будущем.

Dim sNotes As String = g_strProgram.sNotes
Dim iStartIndex, iEndIndex As Integer
Dim iRow As Integer = 0

If (sNotes.Length > 0) Then
   g_frmMain.ucAdditionalInfo.txtNotes.Text = sNotes
   Do
      iRow += 1
      oWorkSheet.Range("A" & iRow + 1 & ":L" & iRow + 1).Merge()
      iStartIndex = IIf(iRow = 1, 0, iEndIndex + 1)

      If (g_frmMain.ucAdditionalInfo.txtNotes.GetFirstCharIndexFromLine(iRow) >= 0) Then
         iEndIndex = g_frmMain.ucAdditionalInfo.txtNotes.GetFirstCharIndexFromLine(iRow) - 1
      Else
         iEndIndex = g_strProgram.sNotes.Length - 1
      End If

      oWorkSheet.Range("ProgramNote").Offset(iRow, 0).Value = g_strProgram.sNotes.Substring(iStartIndex, iEndIndex - iStartIndex).TrimEnd(vbCrLf)
   Loop While (iEndIndex < g_strProgram.sNotes.Length - 1)
Else
       oWorkSheet.Visible = Excel.XlSheetVisibility.xlSheetHidden
End If

Если кто-то там, читающий это, нуждается в разъяснении с любым из вышеупомянутых, не стесняйтесь задавать вопрос здесь! ~ Восьмой

0 голосов
/ 13 мая 2009

Aaargh! Объединенные ячейки - дело сатаны, и их следует избегать любой ценой. Даже если их присутствие считается доброкачественным, у них могут быть тонкие и хитрые способы испортить прочный рабочий лист.

Вы не упоминаете, обрезается ли текст по вертикали или по горизонтали?

Вероятно, вы должны рассмотреть AutoFit метод как способ заставить текст оставаться внутри области печати. Это изменит размер ячейки, чтобы текст соответствовал выбранному вами размеру шрифта, и, поскольку область печати определяется границами ячейки, это должно гарантировать, что весь текст остается видимым после печати. ​​

Если это не сработает, может быть трудно определить, не избавившись от объединенных ячеек. Они абсолютно необходимы?

Я сейчас работаю над тем же шаблоном рабочего листа, что и у вас, и у меня есть ячейки, которые изменяют свой размер, чтобы вместить широкий диапазон строк до 911 символов, используя не более чем обычную автоподборку.

...