2014-12-09 2 views
0

Я нашел код для добавления изображения в Excel-лист с SDK 2.0. И эта часть отлично работает. Теперь я хочу текстовое поле под изображением, но я не знаю, как получить TextBox в целом.Текстовое поле Excel Group и картинка

Какие классы мне нужны, что такое appands, что или какое свойство?

Кроме того, было бы здорово, если бы это была группа. Так что, когда вы тащите один за другим.

код выглядеть следующим образом (я знаю, что это многовато, но я couldt сократить его больше):

private void addImage(Offset offset, Extents extents, string sImagePath, string description) 
    { 
     WorksheetPart worksheetPart = this.arbeitsBlatt.WorksheetPart; 
     DrawingsPart drawingsPart; 
     ImagePart imagePart; 
     XDrSp.WorksheetDrawing worksheetDrawing; 

     ImagePartType imagePartType = getImageType(sImagePath); 

     { 
      // --- use the existing DrawingPart 
      drawingsPart = worksheetPart.DrawingsPart; 
      imagePart = drawingsPart.AddImagePart(imagePartType); 
      drawingsPart.CreateRelationshipToPart(imagePart); 
      worksheetDrawing = drawingsPart.WorksheetDrawing; 
     } 

     using (FileStream fileStream = new FileStream(sImagePath, FileMode.Open)) 
     { 
      imagePart.FeedData(fileStream); 
     } 

     int imageNumber = drawingsPart.ImageParts.Count<ImagePart>(); 
     if (imageNumber == 1) 
     { 
      Drawing drawing = new Drawing(); 
      drawing.Id = drawingsPart.GetIdOfPart(imagePart); 
      this.arbeitsBlatt.Append(drawing); 
     } 

     XDrSp.NonVisualDrawingProperties noVisualDrawingProps = new XDrSp.NonVisualDrawingProperties(); 
     XDrSp.NonVisualPictureDrawingProperties noVisualPictureDrawingProps = new XDrSp.NonVisualPictureDrawingProperties(); 

     noVisualDrawingProps.Id = new UInt32Value((uint)(1024 + imageNumber)); 
     noVisualDrawingProps.Name = "Picture " + imageNumber.ToString(); 
     noVisualDrawingProps.Description = beschreibung; 

     PictureLocks picLocks = new PictureLocks(); 
     picLocks.NoChangeAspect = true; 
     picLocks.NoChangeArrowheads = true; 
     noVisualPictureDrawingProps.PictureLocks = picLocks; 

     XDrSp.NonVisualPictureProperties noVisualPictureProps = new XDrSp.NonVisualPictureProperties(); 
     noVisualPictureProps.NonVisualDrawingProperties = noVisualDrawingProps; 
     noVisualPictureProps.NonVisualPictureDrawingProperties = noVisualPictureDrawingProps; 

     Stretch stretch = new Stretch(); 
     stretch.FillRectangle = new FillRectangle(); 

     XDrSp.BlipFill blipFill = new XDrSp.BlipFill(); 
     Blip blip = new Blip(); 
     blip.Embed = drawingsPart.GetIdOfPart(imagePart); 
     blip.CompressionState = BlipCompressionValues.Print; 
     blipFill.Blip = blip; 
     blipFill.SourceRectangle = new SourceRectangle(); 
     blipFill.Append(stretch); 

     Transform2D t2d = new Transform2D(); 
     t2d.Offset = offset; 
     t2d.Extents = extents; 
     XDrSp.ShapeProperties sp = new XDrSp.ShapeProperties(); 
     sp.BlackWhiteMode = BlackWhiteModeValues.Auto; 
     sp.Transform2D = t2d; 
     PresetGeometry prstGeom = new PresetGeometry(); 
     prstGeom.Preset = ShapeTypeValues.Rectangle; 
     prstGeom.AdjustValueList = new AdjustValueList(); 
     sp.Append(prstGeom); 
     sp.Append(new NoFill()); 

     XDrSp.Picture picture = new XDrSp.Picture(); 
     picture.NonVisualPictureProperties = noVisualPictureProps; 
     picture.BlipFill = blipFill; 
     picture.ShapeProperties = sp; 

     XDrSp.OneCellAnchor anchor = this.getCellAnchor(); 

     XDrSp.Extent extent = new XDrSp.Extent(); 
     extent.Cx = extents.Cx; 
     extent.Cy = extents.Cy; 
     anchor.Extent = extent; 

     anchor.Append(picture); 
     anchor.Append(new XDrSp.ClientData()); 

     worksheetDrawing.Append(anchor); 
     worksheetDrawing.Save(drawingsPart); 

     #endregion 
    } 

ответ

0

Я думаю, что вы новичок в OpenXml SDK

Прежде всего вам нужно используйте новейшую версию Open XMl SDK - Version 2.5 [Загрузить - http://www.microsoft.com/en-us/download/details.aspx?id=30425]

Здесь загрузите ОБЩИЙ OpenXMLSDKV25.msi, OpenXMLSDKToolV25.msi .. Установите ОБА.

Теперь вот трюк, инструмент для работы с OpenXML - это тот, который вам нужен. Он позволяет просматривать существующий файл Excel и разбивать его на CODES [смотреть здесь - https://www.youtube.com/watch?v=KSSMLR19JWA]

Теперь вам нужно создать лист Excel вручную с помощью того, что вы хотите [В вашем случае добавить текстовое поле под изображение ] Затем откройте этот файл Excel с помощью инструмента повышения производительности и поймите CODE. Обратите внимание, что вам нужно будет понять структуру файлов электронных таблиц, чтобы понять этот код. [Reffer this - https://www.google.com/#q=open+xml+sdk] .. Теперь напишите ваши коды, чтобы они соответствовали вашим требованиям, используя коды инструмента производительности.

ПРИМЕЧАНИЕ. - Когда вы проанализируете инструмент Dummy Spreadsheets with Productivity, вы поймут, почему предоставление или руководство примерами CODE в качестве ответа нецелесообразно.
- Happy Coding-

+1

Да, я забыл этот инструмент. Спасибо за ссылки. – Walter

Смежные вопросы