Форматирование вывода Writeline в VB 2010 - PullRequest
0 голосов
/ 15 марта 2012

Добрый день,

Я искал способ форматирования вывода с использованием writeline / write (streamwriter) с использованием RTF-тегов и задавался вопросом, существует ли синтаксис для этого, если он существует.Я не смог найти ресурс, который бы четко объяснял, как «красиво» выводить данные в файл.

Причина, по которой я спрашиваю, заключается в том, что я хочу «распечатать» результаты из моей программы в файл, который, по крайней мере, будет центрироваться, вкладываться и даже выделяться жирным шрифтом, где это возможно, не требуя от пользователя идтии futz с этим.Кажется, я видел, что Crystal Reports не будет работать с VB 2010 Express и, честно говоря, просто хочу создать файл с выводом.

Проблема, с которой я сталкиваюсь, заключается в том, как сделать вывод менее похожим на записьсделал это (вы знаете, writeliney-ish) и больше похоже на то, что кто-то нашел время, чтобы сделать Writeline похожим на то, что он сделал что-то потрясающее.

Вот код, который покажет вам, что я пытаюсь сделать:

sw.Write("                    RATE QUOTATION ")
            sw.WriteLine("   ")
            sw.WriteLine("           ")
            sw.WriteLine(mycompanyname)
            sw.WriteLine(mycompanyaddress1 + ControlChars.Tab + "Phone:", companyphone)
            sw.WriteLine(mycompanyaddress3 + ControlChars.Tab + "Fax:", companyfax)
            sw.WriteLine(cityname, stateprovince, zippostal)
            sw.WriteLine("Visit us online at:", websiteaddress)
            sw.WriteLine("    ")
            sw.WriteLine("Quoted by:", contactname + " " + "E-mail:", contactemail)
            sw.Write("Date: ")
            sw.WriteLine(DateTime.Now)
            sw.WriteLine(" ")
            sw.WriteLine(("Customer Name:" + "   " + quotename.Text), "Company:" + "   " + quotecompany.Text + " " + "Customer E-mail:" + "   " + quoteemail.Text)
            sw.WriteLine(("Phone:" + "   " + quotephone.Text + ControlChars.Tab + "Fax:" + "   " + quotefax.Text))
            sw.WriteLine("  ")
            sw.WriteLine("Shipment Details:")

Есть ли способ управления Writeline таким образом, что вы можете создать RTF через streamwriter и указать теги форматирования, такие как центрирование и полужирный, и т. Д.?Я пытаюсь придумать способ, чтобы информация заголовка RTF создавалась, когда streamwriter запускает свой бизнес и печатает то, что я хочу.Я не думаю, что есть изящный способ создать PDF, поэтому сейчас я предпочитаю вывод старой школы.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 16 марта 2012

Как и было обещано, я начал играть с некоторым кодом и решил поделиться им, хотя я все еще пытаюсь выяснить, почему vbNewLine не работает.: /

Первоначально я пытался использовать streamwriter для встраивания кодов RTF, таких как (\ rtf1), (\ b) и т. Д., Но они не работают в операторах writeeline, которые я пробовал, например:

writeline ("\ b Это жирный шрифт \ b0")

Таким образом, делая вид, что у вас есть поле richtext (rtb), вы можете создать файл, который будет разрешать форматирование шрифта и другое форматирование текста(хотя все еще пытаюсь разобраться в нескольких вещах), что может быть альтернативой потоковому редактору, если вы заботитесь о том, как вывод выводится в файл.

Public Class Form1

Private Property richtextbox1 As Object

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim something As String
    Dim somethingelse As String
    Dim butwaittheresstillmore As String

    something = TextBox1.Text
    somethingelse = TextBox2.Text
    butwaittheresstillmore = TextBox3.Text

    Save1.InitialDirectory = "c:\users\shawn\desktop"
    Save1.FileName = " "
    Save1.Filter = " RTF file | *.rtf"
    Save1.ShowDialog()


    Dim rtb As New RichTextBox
    rtb.SelectionAlignment = HorizontalAlignment.Center
    rtb.Text = something & vbNewLine

    rtb.SelectionAlignment = HorizontalAlignment.Left
    rtb.Text = somethingelse + (" another field: ") + butwaittheresstillmore
    rtb.SelectAll()
    rtb.SelectionFont = New Font(New FontFamily("Arial"), 12, FontStyle.Regular,
    GraphicsUnit.Pixel)
    rtb.SaveFile(Save1.FileName)
End Sub

КонецКласс

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

Спасибо!

0 голосов
/ 15 марта 2012

A StreamWriter предназначен просто для записи данных в поток.Нет причин, по которым он должен знать, что такое RTF.

Если вы хотите использовать StreamWriter, вам нужно будет самостоятельно рассчитать RTF.

В Интернете могут быть различные библиотеки RTF,было бы полезно.Я предлагаю гуглить для некоторых.

...