ClosedXML заглавка на колона за експортиране в excel [C#]

Имам функция за експортиране на datagridview в excel с помощта на CloedXML. Всичко работи добре, НО:

Добавям колони от datagridview към datatable с помощта на

            foreach (DataGridViewColumn column in dgvLoadAll.Columns)
            {
                dt.Columns.Add(column.Name);
            }

Това използва column.Name, което е Design (Name) в моя dgv. Искам да добавя колона.HeaderText. Когато използвам

            dt.Columns.Add(column.HeaderText, typeof(string));

той добавя заглавки на колони успешно, но експортирането не работи добре. Експортира само колони, където няма специални знаци или дори празен знак. (Колоната „Име“ се експортира, но „Име по IUPAC“ или „Čas“ не, ...). Преименуването не е опция.

Ето частта от функцията за експортиране, която отговаря за писането на клетки. Само напомняне: Работи 100% ОК, когато използвам column.Name.

            foreach (int rowindex in rowsselected)
            { 
                foreach (int columnindex in columnsList)
                {                    
                        worksheet.Cell(k+2, j+1).Value = dt.Rows[rowindex] [columnindex].ToString();
                        j++;
                }
              j = 0;
              k++;
             }

person tomiteko    schedule 07.01.2015    source източник


Отговори (1)


От това как изглежда в MSDN за DataColumnCollection.Add(string columnName, Type type) и в техните примери, columnName е за задаване на име на променлива на новата колона с данни. Това означава, че сте ограничени до валидни имена на променливи като вход, което обяснява защо интервалите и специалните знаци не работят. Предполагам, че _Name, Address1, Zip_Code и т.н. ще работят.

Освен това не можах да разбера от вашия пример, но мисля, че може да не сте разбрали за какво служи параметърът type. Той е за задаване на типа променлива, който DataColumn съдържа. Не е необходимо да указвате typeof(string), защото типът по подразбиране на DataColumn е string.

person tehDorf    schedule 07.01.2015
comment
този typeof(string) беше просто изстрел..Сега го разбирам.. Не знам дали обясних добре ситуацията. Моят код добавя заглавки на колони към Excel. Но експортирането на редове е повредено. Експортира само стойности под колони без специални знаци или интервали. това е моята функция за писане на редове в Excel: foreach (int columnindex в columnsList) {worksheet.Cell(1, col_).Value = dt.Columns[columnindex].ToString(); col_++; } - person tomiteko; 08.01.2015