我甚至不確定我是否使用了正確的術語;我會根據需要更新問題和標題。使用OpenXmlSDK,我如何選擇/更新範圍控制單元格中的值?
我正在使用OpenXmlSDK填充預先存在的Excel 2010 .xlsm
文件 - 一個啓用宏的工作表。
我可以很好地訪問工作表和單元格。
但是,我不知道如何訪問或更新單元格中的數據,該單元格是下拉控件,它從另一個工作表上的範圍中獲取其值。
它標記爲「H13」的工作表上,並用鼠標右鍵點擊>>格式控制顯示
Input range: 'anotherWorksheet'!$N$3:$N$54
Cell link: 'anotherWorksheet'!$M$3
每當我試圖讓這個單元格的引用,我無法找到它 - 我獲得null
值
我已經試過兩種接入方式:
我甚至不知道,如果我使用的是正確的術語;我會根據需要更新問題和標題。
我正在使用OpenXmlSDK填充預先存在的Excel 2010 .xlsm
文件 - 一個啓用宏的工作表。
我可以很好地訪問工作表和單元格。
但是,我不知道如何訪問或更新單元格中的數據,該單元格是下拉控件,它從另一個工作表上的範圍中獲取其值。
它標記爲「H13」的工作表上,並用鼠標右鍵點擊>>格式控制顯示
Input range: 'anotherWorksheet'!$N$3:$N$54
Cell link: 'anotherWorksheet'!$M$3
每當我試圖讓這個單元格的引用,我無法找到它 - 我獲得null
值
我已經試過兩種接入方式:
// http://msdn.microsoft.com/en-us/library/ff921204.aspx
private static Cell GetCell(Worksheet worksheet, string addressName)
{
return worksheet.Descendants<Cell>().Where(
c => c.CellReference == addressName).FirstOrDefault();
}
和:
// Given a worksheet, a column name, and a row index,
// gets the cell at the specified column and
// http://stackoverflow.com/questions/527028/open-xml-sdk-2-0-how-to-update-a-cell-in-a-spreadsheet
private static Cell GetCell(Worksheet worksheet, string columnName, uint rowIndex)
{
Row row = GetRow(worksheet, rowIndex);
if (row == null)
return null;
return row.Elements<Cell>().Where(c => string.Compare
(c.CellReference.Value, columnName +
rowIndex, true) == 0).FirstOrDefault();
}
// Given a worksheet and a row index, return the row.
private static Row GetRow(Worksheet worksheet, uint rowIndex)
{
return worksheet.GetFirstChild<SheetData>().
Elements<Row>().Where(r => r.RowIndex == rowIndex).First();
}
兩者得到null
用於所述目標小區H13
,但提供到周圍的細胞(即,`H12,H14,G13'
實際上,I13
也產生null
,但細胞不與任何填充的引用。但是,如果我無法獲得參考,我怎麼才能使用SDK進行填充?不是我的主要觀點,在這裏。
我將收到與下拉菜單中的某個條目相匹配的數據;我只需要實際填充/選擇目標電子表格中的特定條目。
我該如何使用OpenXmlSDK做到這一點?我試過使用各種開源庫,但似乎都不支持.xslm
文件(客戶端提供的文件,不能以其他格式使用;宏必須在啓動時執行等)。
儘管我使用C#,因爲我的問題是關於OpenXmlSDK,我會接受使用該框架的其他語言的答案。