#c# #excel #leading-zero
#c# #excel #начальный ноль
Вопрос:
У меня есть приложение c # для Windows, которое позволяет пользователю экспортировать данные из datagridview в файл Excel.
Моя проблема в том, что экспортированный файл не содержит начальных нулей в ячейках. Таким образом, «00001» отображается как «1».
Я попытался заключить одинарную кавычку (‘) перед значением, которое должно быть записано в файл, но кавычка также отображается. ‘00001
Есть ли способ, чтобы одинарная кавычка не отображалась и отображала только 00001?
Вот код, который я использовал при записи в файл.
private void btn_Export_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel Documents (*.xls)|*.xls";
if (sfd.ShowDialog() == DialogResult.OK)
{
// ToCsV(dataGridView1, @"c:tempexport.xls"); ???????
ToCsV(dgv_SLAccounts, sfd.FileName);
MessageBox.Show("Successfully Created " sfd.FileName);
}
}
private void ToCsV(DataGridView dGV, string filename)
{
string stOutput = "";
// Export titles:
string sHeaders = "";
for (int j = 0; j < dGV.Columns.Count; j )
sHeaders = sHeaders.ToString() Convert.ToString(dGV.Columns[j].HeaderText) "t";
stOutput = sHeaders "n";
// Export data.
for (int i = 0; i < dGV.RowCount - 1; i )
{
string stLine = "";
for (int j = 0; j < dGV.Rows[i].Cells.Count; j )
stLine = stLine.ToString() "'" Convert.ToString(dGV.Rows[i].Cells[j].Value) "t";
stOutput = stLine "n";
}
Encoding utf16 = Encoding.GetEncoding(1254);
byte[] output = utf16.GetBytes(stOutput);
FileStream fs = new FileStream(filename, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(output, 0, output.Length); //write the encoded file
bw.Flush();
bw.Close();
fs.Close();
}
Комментарии:
1. Я больше не использую Excel для csv. Даже если нули есть, они не будут отображаться. Вы можете открыть его в блокноте или попробовать другие сторонние продукты
Ответ №1:
Добавьте t перед вашей строкой. Проблема решена.
Ответ №2:
Excel не будет отображать начальные нули в файлах CSV. Ваш единственный вариант — записать файл в формате XLS или XLSX, а затем отформатировать диапазон, содержащий ячейки с начальными нулями, как текст.
Ответ №3:
Начальные нули действительно могут быть сохранены в файлах CSV, по крайней мере, при использовании Excel. Вы также были довольно близки к рабочему решению, пытаясь использовать одинарную кавычку перед числом.
Однако решение состоит в том, чтобы записать число с начальными нулями как функцию:
="00001"
Таким образом, Excel интерпретирует значение как строку и не удаляет начальные нули.
Попробуйте этот код (адаптированный из вашего оригинала):
stLine = stLine.ToString() "="" Convert.ToString(dGV.Rows[i].Cells[j].Value) ""t";
Ответ №4:
int i=1;
Console.WriteLine(i.ToString().PadLeft(5,'0'));
Комментарии:
1. stLine = stLine. toString() «‘» Преобразовать. toString(dGV.Rows[i]. Ячейки [j].Значение). PadLeft(5,’0’) » t»; По-прежнему отображается «1» вместо «000001»
2. Данные «000001» взяты из базы данных (отображаются в таблице данных), и я хочу, чтобы они были экспортированы в файл Excel в том же формате. Но в файле Excel отображается только «1» вместо «000001». Начальные нули были удалены из исходного значения. Пожалуйста, помогите .. 🙁
3. JasonX это проблема с Excel попробуйте изменить параметр автоматического преобразования Excel, иначе добавьте фиктивную строку со строкой, скажем, «Samp»
Ответ №5:
Используйте строку формата при записи вашего целого числа следующим образом:
int i = 1;
Console.WriteLine(i.ToString("00000"));
Дополнительная информация о пользовательских строках числового формата здесь: http://msdn.microsoft.com/en-us/library/0c899ak8 (v = против 110).aspx