2015-10-22 2 views
-1

У меня есть GridView, который я конвертирую в электронную таблицу Excel. Я хочу, чтобы первый столбец подсчитывал строки, т. Е. Если в электронной таблице 10 строк, тогда первый столбец должен отображать от 1 до 10. Но сейчас электронная таблица просто отображает последний номер для всех столбцов. Поэтому, если excel имеет 10 строк, число 10 для каждой строки вместо подсчета с одного.Попытка подсчета строк при создании файла excel

int Sno = 1; 
for (Sno = 1; Sno < ds.Tables[0].Rows.Count; Sno++) 
{ 
     Sno++; 
} 

downloadcsv.WriteLine("\"" + Sno + "\",\"" +        
        dr["CustomerName"].ToString() + "\",\"" + 
        dr["invoiceno"].ToString() + "\"," 
       ); 

ответ

1

У вас есть цикл, который подсчитывает каждую строку, но вы не устанавливаете никаких значений внутри цикла. После цикла вы устанавливаете только одно значение. Поэтому, конечно, вы устанавливаете только номер последней строки.

Вам нужно будет установить данные для каждой строки внутри вашего тела цикла.

Извините, я набросал код для вас, но я не могу сказать, что такое downloadcsv или почему на Земле вы использовали бы WriteLine().

+0

downloadcvs просто создает файл первенствовать 'downloadcsv = новый StreamWriter (новый FileStream (FileName, FileMode.Create)); '. Я не уверен, как установить данные для каждой строки. – user123456789

+0

@ user123456789: Вы пробовали прочитать мой ответ? –

+0

Он говорит, что просто смотрю на вашу петлю, да вы подсчитываете каждую строку, но заменяете номер каждый раз, когда цикл работает, поэтому к тому времени, когда вы пишете что-либо, у вас есть только последний номер – Scriven

0

просто добавить «серийный номер» в самой GridView колонки без использования счетчика,

<asp:TemplateField HeaderText="S#" > 
         <ItemTemplate> 
          <%# Container.DataItemIndex + 1 %> 
         </ItemTemplate> 
        </asp:TemplateField> 

если не показывая пользователю, то использовать

<asp:TemplateField HeaderText="S#" Visible="False"> 
         <ItemTemplate> 
          <%# Container.DataItemIndex + 1 %> 
         </ItemTemplate> 
        </asp:TemplateField> 
Смежные вопросы