私はclosedXMlとExcelの使用にも(少なくともこの目的のために)本当に新しいので、ばかげた質問をしている場合は申し訳ありません。
closeXMLはまだグラフをサポートしていないことを知っているので、これを回避するために頭に浮かんだのは、Excelテーブルを使用してグラフを作成することだけでした。そうすれば、新しい行を挿入したときにClosedXMLが範囲を更新し、グラフがそれを取得すると思いました。まあ、そうではありませんでした。少なくとも、closedXMLライブラリを使用してコードから行を追加する場合はそうではありません。
興味深いのは、Excel内から新しい行を追加するとグラフが自動的に更新されることですが、コードから同じ結果を取得する場合は、名前付き範囲とともにOFFSET数式を使用してから、グラフのソースデータをこれらの名前付き範囲に設定する必要があります。そのため、新しい行を挿入するために使用するコードに問題があるかどうかを知りたいのです。
Dim ruta As String = Server.MapPath("~/Templates/MyTemplate.xlsx")
Dim wb As New XLWorkbook(ruta)
Dim ws = wb.Worksheet(1)
Dim tblData = ws.Table("Table1")
Dim year As Integer = 2000
For i As Integer = 1 To 13
With tblData.DataRange.LastRow()
.Field("Year").SetValue(year)
.Field("Sales").SetValue(CInt(Math.Floor((2000 - 500 + 1) * Rnd())) + 500)
End With
tblData.DataRange.InsertRowsBelow(1)
year = year + 1
Next
tblData.LastRow.Delete()
ご覧のとおり、コードは非常に単純であり、テンプレートも非常に単純です。このテンプレートは、「Year」(table1 [Year])と「Sales」(Table1 [Sales] )の2つの列のみで構成されています。
私が言ったように、Excelから直接新しい行を追加することは期待どおりに機能し、チャートシリーズに新しい行が含まれないのはコードからテーブルを生成するときだけなので、これは私のテンプレートとは何の関係もないと思います追加された
最初の行(テーブルを挿入するときにデフォルトで追加される行)のみが含まれるため、新しい範囲( Sheet1!Table1 [Sales]およびSheet1!Table1 [Year])
を手動で追加する必要があります。
どんな助けでも大歓迎です
PSこれは、完全なコードとExcelテンプレート(\ Templates \ MyTemplate.xlsx)を含むRARへのリンクです。