您可以使用Aspose.Cells的智能標記功能完成任務。您只需根據插入到單元格中的智能標記創建命名範圍即可。我已經使用Aspose.Cells API爲您的需求編寫了示例代碼。請參考它,您可以根據需要添加/更新代碼段。
e.g
示例代碼:
DataTable dt = new DataTable("Trend");
dt.Columns.Add("Period", typeof(string));
dt.Columns.Add("Points", typeof(int));
DataRow row = dt.NewRow();
row[0] = "4Q'14";
row[1] = 27;
dt.Rows.Add(row);
row = dt.NewRow();
row[0] = "1Q'15";
row[1] = 0;
dt.Rows.Add(row);
row = dt.NewRow();
row[0] = "2Q'15";
row[1] = 0;
dt.Rows.Add(row);
row = dt.NewRow();
row[0] = "3Q'15";
row[1] = 0;
dt.Rows.Add(row);
row = dt.NewRow();
row[0] = "4Q'15";
row[1] = 200;
dt.Rows.Add(row);
WorkbookDesigner wd = new WorkbookDesigner();
//Create a designer workbook
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Cells["A1"].PutValue("Period");
worksheet.Cells["A2"].PutValue("&=Trend.Period");
worksheet.Cells["B1"].PutValue("Points");
worksheet.Cells["B2"].PutValue("&=Trend.Points");
Range range1 = worksheet.Cells.CreateRange("A2:A2");
range1.Name = "RANGE1";
Range range2 = worksheet.Cells.CreateRange("B2:B2");
range2.Name = "RANGE2";
wd.Workbook = workbook;
wd.SetDataSource(dt);
wd.Process();
//Create chart
int chartIndex = worksheet.Charts.Add(ChartType.Column, 5, 2, 29, 10);
Chart chart = worksheet.Charts[chartIndex];
//Obtain the updated ranges after processing smart markers
var r1 = workbook.Worksheets.GetRangeByName("RANGE1");
var r2 = workbook.Worksheets.GetRangeByName("RANGE2");
MessageBox.Show(r2.RefersTo);
//Add the nseries collection to a chart
chart.NSeries.Add(r2.RefersTo, true);
//Get or set the range of category axis values
chart.NSeries.CategoryData = r1.RefersTo;
chart.NSeries.IsColorVaried = true;
wd.Workbook.Save("e:\\test2\\out1chart1.xlsx");
我的工作是支持開發者/佈道者的Aspose。
Hi Amjad,後續問題,如果它沒有數據,我們可以隱藏這張表嗎?此表屬於一個大電子表格,並且工作表包含超過20個這樣的表格,而我的客戶希望隱藏這些空表格。它可行嗎?據我所知,我可以把每張桌子放在一張單獨的紙上,但在某些情況下可能會生成10張以上的紙張。 – Yan
您的意思是說隱藏智能標記,例如單元格中的「&= Trend.Period」和「&= Trend.Points」?那麼,如果在底層表中沒有記錄,智能標記將從這些單元格中移除(A2和B2)。而且,如果您在數據表中沒有記錄時不需要創建圖表,則可以使用DataTable.Rows.Count屬性(如果表格爲空)來檢查(在您的代碼中),因此您不應該通過Aspose.Cells API。 –
我的意思是,例如,如果我的工作表中有15個表格,如果一個表格沒有數據,我們可以隱藏它嗎?客戶說,看到這些空表很煩人,因爲在網頁上我們根據每個用戶的設置動態地隱藏這些表。 – Yan