Bir web sitesinden bir PowerPoint sunusuna vermek ve Open XML SDK 2.0 kullanarak gerçekleştirmek için kullanmam gereken bir sürü veri var bu görev. Ben ihracat yeniden oluşturmak için kullanabileceğiniz şablon kodu oluşturmak için Açık XML SDK 2.0 Verimlilik Aracı ile koyarak bir PowerPoint sunum var.Açık XML SDK 2.0 kullanarak mevcut slayt kapalı olduğunda tablo yeni PowerPoint slayd nasıl bölünür?
Bu slaytlardan birinde bir tablom var ve bu tabloya tablo eklemek ve tablo slaytın altını aşarsa bu tabloyu birden çok slaytta kırmak. Benim çektiğim yaklaşım tablonun yüksekliğini belirlemek ve slaydın yüksekliğini aşarsa, bu yeni içeriği bir sonraki slayta taşıyın. Bir PowerPoint slaydına yinelenen veri eklemekle ilgili Bryan and Jones blogunu okudum, ancak senaryom biraz farklı. Bunlar aşağıdaki kodu kullanın: onlar resmin yüksekliği olacağından hiç tablo satırını ayarlamak ne yükseklik biliyorum ama beri
A.Table tbl = current.Slide.Descendants<A.Table>().First();
A.TableRow tr = new A.TableRow();
tr.Height = heightInEmu;
tr.Append(CreateDrawingCell(imageRel + imageRelId));
tr.Append(CreateTextCell(category));
tr.Append(CreateTextCell(subcategory));
tr.Append(CreateTextCell(model));
tr.Append(CreateTextCell(price.ToString()));
tbl.Append(tr);
imageRelId++;
Bu benim için işe yaramaz metin I değişik miktarlarda eklerken Önceden yüksekliği bilmiyorum, bu yüzden tr.Height
değerini varsayılan değere ayarlıyorum. Ben denemek ve aldığımda
public static A.TableCell CreateTextCell(string text)
{
A.TableCell tableCell = new A.TableCell(
new A.TextBody(new A.BodyProperties(),
new A.Paragraph(new A.Run(new A.Text(text)))),
new A.TableCellProperties());
return tableCell;
}
public static Int64Value TableHeight(A.Table table)
{
long height = 0;
foreach (var row in table.Descendants<A.TableRow>()
.Where(h => h.Height.HasValue))
{
height += row.Height.Value;
}
return height;
}
Bu doğru Mevcut tabloya yeni tablo satır ekler, ancak: Burada
A.Table tbl = tableSlide.Slide.Descendants<A.Table>().First();
A.TableRow tr = new A.TableRow();
tr.Height = 370840L;
tr.Append(PowerPointUtilities.CreateTextCell("This");
tr.Append(PowerPointUtilities.CreateTextCell("is"));
tr.Append(PowerPointUtilities.CreateTextCell("a"));
tr.Append(PowerPointUtilities.CreateTextCell("test"));
tr.Append(PowerPointUtilities.CreateTextCell("Test"));
tbl.Append(tr);
tableSlide.Slide.Save();
long tableHeight = PowerPointUtilities.TableHeight(tbl);
yardımcı yöntemler vardır: İşte tablo yükseklikte endam benim girişimi Tablonun yüksekliği, orijinal yüksekliğini değil yeni yüksekliği döndürür. Yeni yükseklik, büyük miktarda metin eklendikten sonra, başlangıçta ayarladığım varsayılan yükseklik anlamına gelir ve yükseklik değil. PowerPoint'te açıldığında yüksekliğin sadece yeniden ayarlandığı anlaşılıyor.
Satırdaki en büyük tablo hücresinin yüksekliğine erişmeyi denedim, ancak bu görevi gerçekleştirmek için doğru özelliği bulamıyor gibi görünmüyor.
Sorunun, PowerPoint'te açılana kadar satırın yüksekliğini güncelleştirmediği için dinamik olarak eklenen bir tablo satırının yüksekliğini nasıl belirliyorsunuz? Açık XML SDK 2.0 kullanırken içeriği başka bir slayta ne zaman ayırmanın diğer yolları? Bu konuda çok fazla dokümantasyon bulunmadığından, daha iyi bir yaklaşımla ilgili bir öneriye açığım.
Evet ben bu ben aşağı gidiyordu yol oldu, ama herhangi bir şans yoktu yani. Kod ile çalışan bir örnek için daha fazlasını arıyorum. – amurra
@Otaku: Bu konuya hiç bir zaman bir çözüm bulamadım ve zamanım projemde bir sorun olduğu için verinin slayttan akmasını ve son kullanıcının verileri yeniden biçimlendirmesini sağlamaya karar verdik. – amurra