Вопрос № 163056: Здравствуйте уважаемые эксперты! У меня вопрос по C#(Visual studio 2005/2008). Есть программа, в которой есть dataGridView, данные вводит пользователь: Фрагмент кода: количество = (int)kol.Value; <div style="margin:15px; margin-top:10px"><di...
Вопрос № 163.056
Здравствуйте уважаемые эксперты! У меня вопрос по C#(Visual studio 2005/2008). Есть программа, в которой есть dataGridView, данные вводит пользователь: Фрагмент кода: количество = (int)kol.Value;
Код:
public string фам1; //Фамилия клиента! public
int количество; //Количество! public double сумма1; //Сумма! public double тариф = 20.0; //Тариф! сумма1 = количество * тариф; фам1 = fam1.Text;
Мне нужно из GazBD(он же dataGridView1) сохранить данные в текстовый файл, открыть текстовый файл и записать из текстового файла в таблицу GazBD и вывести на печать данные той же таблицы из программы. Благодарю всех Экспертов RusFAQ.Ru. Спасибо заранее...
Приложение:
Отправлен: 23.03.2009, 17:22
Вопрос задал: Сипан (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: DrakoN
Здравствуйте, Сипан! А ) вы используете в коде кирилицу. Не делайте так. теперь по сути вопроса. Существует много способов решить вашу задачу А хмл - файл, Б - сsv - файл Г txt файл. Все их можно назвать текстовыми. Разница лишь в том что с последним больше всего мороки.
по порядку СSV
Dim builder as new StringBuilder() for each currentRow as DataGridViewRow in Me.theDataGridView.Rows for each currentCell as DataGridViewCell in currentRow.Cells builder.Append(currentCell.Value)
builder.Append(",") next builder.Append(Environment.NewLine) next builder.Remove(builder.Length - 1, 1) 'remove the last comma using writer as new StreamWriter("myfile.csv") writer.Write(builder.ToString()) writer.Close() end using
Using parser As New Microsoft.VisualBasic.FileIO.TextFieldParser("c: empmyFile.csv") parser.SetDelimiters(",") Whi
le Not parser.EndOfData Me.DataGridView1.Rows.Add(parser.ReadFields()) End While End Using
DataTable dt = ((DataView)this.dataGridView1.DataSource).Table; dt.WriteXml(@"C: est ext.xml");
Я думаю что разобраться с FileDialog это не проблема. Пример открытия файла OpenFileDialog fdlg = new OpenFileDialog(); fdlg.Title = "C# Corner Open File Dialog"; fdlg.InitialDirectory = @"C: "; fdlg.Filter = "Text files (*.txt | .txt | All files (*.*) | *.*"; fdlg.FilterI
ndex = 2; fdlg.RestoreDirectory = true; if (fdlg.ShowDialog() == DialogResult.OK) { textBox1.Text = fdlg.FileName; }
Теперь с печатью. Тут немного сложнее
using System.IO; using System.Drawing.Printing;
\ момент истины добавить в обработчик кнопки печать. string filename=textBox1.Text.ToString(); //Create a StreamReader object reader = new StreamReader (filename); //Create a Verdana font with size 10 verdana10Font = new Font ("Verdana",
10); //Create a PrintDocument object PrintDocument pd = new PrintDocument(); //Add PrintPage event handler pd.PrintPage += new PrintPageEventHandler(this.PrintTextFileHandler); //Call Print Method pd.Print(); //Close the reader if (reader != null) reader.Close();
\просто добавь этот метод private void PrintTextFileHandler (object sender, PrintPageEventArgs ppeArgs) { //Get the Graphics object Graphics g = ppeArg
s.Graphics; float linesPerPage = 0; float yPos = 0; int count = 0; //Read margins from PrintPageEventArgs float leftMargin = ppeArgs.MarginBounds.Left; float topMargin = ppeArgs.MarginBounds.Top; string line = null; //Calculate the lines per page on the basis of the height of the page and the height of the font linesPerPage = ppeArgs.MarginBounds.Height/ verdana10Font.GetHeight (g); //Now read lines one by one, using StreamReader while (count<linesPerPage && (( line
= reader.ReadLine ()) != null)) { //Calculate the starting position yPos = topMargin + (count * verdana10Font.GetHeight (g)); //Draw text g.DrawString (line, verdana10Font, Brushes.Black, leftMargin, yPos, new StringFormat()); //Move to next line count++; } //If PrintPageEventArgs has more pages to print if (line != null) { ppeArgs.HasMorePages = true; } else { ppeArgs.HasMorePages = false; } }
Вни
мание это примеры их нужно подстроить. По всем вопросам You are Welcome.
пс - что касаеться работы с чистым тхт файлом, лучше забудь. Морока еще та. CSV это тот же TXT с одной разницей данные полей записаны через запятую. Экспорт Импорт чистого тексового файла довольно мучителен. Обясню логику если понадобиться суть сводиться к той же идее что и в СSV файле формирование строки но без запятых. Идея в том что каждое поле имеет фиксированую длинну. И если у тебя дляинна поля короче то нужно дополнять
остаток пробелами тогда у тебя как будто получаться колонки одна под одной. Чтение такой же самое читаешь строку потом режешь на SubString и зачитываешь их таблицу попутно тримая прпобелы.
Но советую с этим не связываться СSV и Xml вполне удовлетворят всем условиям задачи.
--------- От Винта!
Ответ отправил: DrakoN (статус: Практикант)
Ответ отправлен: 23.03.2009, 18:02
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245880 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо огромное за ответ!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.