Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel - типы ячеек 
V
    Опции темы
fath_fast
Дата 19.8.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Пытаюсь таблицу из Грида сконвертить в Excel....
Всё норм, только некотрые чилсовые данные которые требуется оставить в общем виде Excel преобразует в запись формата 10E-3. Вот. Как мне програмно утвердить общий тип для ячеек
PM MAIL   Вверх
Idsa
Дата 19.8.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(fath_fast @  19.8.2007,  15:14 Найти цитируемый пост)
Excel преобразует в запись формата 10E-3

Excel преобразует запись в формат с мантиссой в том случае, если для отображения числа ему не хватает места.

Цитата(fath_fast @  19.8.2007,  15:14 Найти цитируемый пост)
Как мне програмно утвердить общий тип для ячеек 

Можно попробовать выставить свойство ячейки NumberFormat, например, в "0.0000" (число нулей выбирайте согласно необходимой точности). Так будет легче подстроить ширину колонки, чтобы в нее вмещались все цифры.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
fath_fast
Дата 19.8.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Idsa, попробовал я выставить NumberFormat как 
"0.00000000" а мне в ответ сгенерилось исключение мол
недопустимый Числовой формат. Мне было предложено заглянуть в меню Формат и из команды ячейки выбрать необходимый формат! Блин...
А можно как-нибудь задать ширину определённой колонки?

PM MAIL   Вверх
Idsa
Дата 20.8.2007, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(fath_fast @  19.8.2007,  22:07 Найти цитируемый пост)
а мне в ответ сгенерилось исключение мол
недопустимый Числовой формат

Значит ты выставил такой формат для ячейки, содержащей нечисловое значение.

Цитата(fath_fast @  19.8.2007,  22:07 Найти цитируемый пост)
А можно как-нибудь задать ширину определённой колонки?

Конечно. Например, так:
Код

((Range)worksheet.Columns[columnName, Type.Missing]).EntireColumn.ColumnWidth = columnWidth;



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
fath_fast
Дата 20.8.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Idsa,  чтобы печаталсь как некий текст неплохо подходит формат "@" 
Теперь загвоздка в ширине ячеек...
Какое именно (в каких единицах) задавать ширину... пробовал просто ставить  "=15" Генерит исключение
"HRESULT: 0x800A03EC" ?


PM MAIL   Вверх
Idsa
Дата 20.8.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(fath_fast @  20.8.2007,  12:16 Найти цитируемый пост)
чтобы печаталсь как некий текст неплохо подходит формат "@" 
Теперь загвоздка в ширине ячеек...

Да, это тоже вариант. Но тогда возникают проблемы с отображением всего числа, если оно не влазит в ячейку. Хотя ее можно решить, установив WordWrap (автоперенос) в true, порой это не выход.
Вариант же с форматом типа "0.00" сразу округляет числа, поэтому проблем с шириной быть не должно.

Цитата(fath_fast @  20.8.2007,  12:16 Найти цитируемый пост)
Какое именно (в каких единицах) задавать ширину... пробовал просто ставить  "=15" Генерит исключение
"HRESULT: 0x800A03EC" ?

Задается целым числом. Наверное, это число пикселей. Так что все правильно.
Скорее всего, ошибка не в этом... а в получении колонки. Попробуй заменить
Код

((Range)worksheet.Columns[columnName, Type.Missing]).EntireColumn.ColumnWidth = columnWidth;

на
Код

Range range = (Range)worksheet.Columns[columnName, Type.Missing];

Скорее всего, ошибка проявится уже здесь.

Если не поможет, приведи побольше кода.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
fath_fast
Дата 20.8.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Idsa, спасибо что продолжаешь помогать  smile !
Так вот свойство  WrapText  в позиции true очень даже неплохое решение!

Цитата

Вариант же с форматом типа "0.00" сразу округляет числа, поэтому проблем с шириной быть не должно.
 

Не принимает он у меня этот формат -  генерит исключение, которое предлагает использовать один из встроенных форматов... Пишу "0,00"  отображается как ####, пока ширину столбца не расширить до нужных размеров...
Загвоздка в расширении столбца программно...
Вот мой код:

Код

 try
            {
            Excel.Worksheet exwsh;
            Excel.Range cells;


            Excel.Application c = new Excel.Application();
            c.Visible = true;
            c.SheetsInNewWorkbook = 1;
            c.Workbooks.Add(Type.Missing);
            exwsh = (Excel.Worksheet)c.Worksheets.get_Item(1);
            int width = 1;
            int height = 3;
             
            int i;
            int j = 0;
            
            for (i = 0; i < busyDGV.Columns.Count; i++)
            {

                for (j = 0; j < busyDGV.Rows.Count - 1; j++)
                {
                    cells = (Excel.Range)exwsh.Cells[height + j + 1, width + i + 1];
                //    cells.WrapText = true;
                 //   cells.VerticalAlignment = 
                    //cells.Style=;
                  //  if(i==
                   cells.NumberFormat = "0,00";
                //   (Excel.Range)exwsh.Columns["E1", Type.Missing] = 50;
                    //cells.NumberFormat = "@";
                   // cells.Borders.LineStyle = Excel.XlLineStyle.xlDashDot;
                    cells.Value2 = busyDGV.Rows[j].Cells[i].Value.ToString();
                }
            }
           
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }

PM MAIL   Вверх
Idsa
Дата 20.8.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(fath_fast @  20.8.2007,  14:23 Найти цитируемый пост)
 (Excel.Range)exwsh.Columns["E1", Type.Missing] = 50;

Имя столбца - буква. Ты же указываешь ячейку. Правильный код будет выглядеть так:
((Range)worksheet.Columns["E", Type.Missing]).EntireColumn.ColumnWidth = columnWidth;


Цитата(fath_fast @  20.8.2007,  14:23 Найти цитируемый пост)
Пишу "0,00"  отображается как ####, пока ширину столбца не расширить до нужных размеров...

А ты попробуй писать не "0,00", а "0.00". Выбор разделителя зависит от "культуры".


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
fath_fast
Дата 22.8.2007, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Сорри, что не отписался! Мой выбор пал на вариант формата ячейки "@" с предустановленным в ТРУ свойством WrapText... 
Вот  а формат "0.00" у меня 2003 Excel так и не принял, но 
то не важно - главное решение найдено за что спасибо огромное Ids -у smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.