Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Interop.Excel: get FULL comment text  [new]
H.A.M.
Member

Откуда: NeverMind
Сообщений: 3173
Проблема с получением комментария в Excel. Если он длиннее 258 символов, то все обрезается...
Т.е. получаю только первые 258 символов. Код такой:
 
      Application excel = new ApplicationClass();
      
      Workbook book = excel.Workbooks.Open(
        file,                         // full XLS file name to open
        2,                            // never update links
        true,                         // open as read only
        5,                            // nothing for foramat - we're not opening text file
        "",                           // no password
        "",                           // no write-res password
        true,                         // supress read-only-recommended messages
        XlPlatform.xlWindows,         // Windows is file origin system
        Type.Missing,                 // optional: not a text file, and format is not 6
        false,                        // no old add-ins
        false,                        // no notifications
        Type.Missing,                 // no default converter
        false,                        // don't add to MRU list
        false,                        // don't save this file, not actual
        XlCorruptLoad.xlNormalLoad);
      
      Worksheet sheet = book.Worksheets[1] as Worksheet;
      
      for(int column = 1; column <= sheet.UsedRange.Columns.Count; column++)
      {
        for(int row = 1; row <= sheet.UsedRange.Rows.Count; row++)
        {
          Range cell = sheet.UsedRange[row, column] as Range;
          if(cell.Comment == null)
          {
            continue;
          }
          String comment = cell.Comment.Shape.TextFrame.Characters(Type.Missing, Type.Missing).Text;
        }
      }
Кто-нибудь сталкивался?

Пад'ехалi, лазер уключылi, i кабздец!
22 апр 10, 00:07    [8667543]     Ответить | Цитировать Сообщить модератору
 Re: Interop.Excel: get FULL comment text  [new]
H.A.M.
Member

Откуда: NeverMind
Сообщений: 3173
Up...

Никаких идей как прочесть комментарии длиннее 258 символов из XLS используя Primary Interop Assemblies для C#?
22 апр 10, 22:42    [8675020]     Ответить | Цитировать Сообщить модератору
 Re: Interop.Excel: get FULL comment text  [new]
H.A.M.
Member

Откуда: NeverMind
Сообщений: 3173
Может кому пригодиться: второй параметр метода Characters не может быть больше 255.
В этом случае Text возвращает ошибку: -2146826273 как строку комментария.

Поэтому комментарий можно читать только по частям. Чтобы не посчитать ошибкой текст комментария, когда в нем будет реальная строка -2146826273, читать можно кусками по 10 символов. Примерно так:

    public const String ERROR = "-2146826273";
    
    public static String ReadComment(Comment comment)
    {
      String ret = "";
      int partIndex = 0;
      TextFrame frame = comment.Shape.TextFrame;
      
      while(true)
      {
        String part = frame.Characters(partIndex, 10).Text;
        if(part == ERROR)
        {
          return ret;
        }
        partIndex += 10;
        ret += part;
      }
    }
23 апр 10, 13:55    [8678655]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить