この単純なタスクの例を見つけるのに苦労している理由はわかりませんが、Google-Fu のスキルに基づいて何も表示されません。OpenXML と VB.Net を使用して既存のスプレッドシートのセルを変更する例を探しています。
数式を使用せずに、既存の値を新しい値に変更したい。
これが私が持っているものです:
Public Sub Main()
Dim strSource, strSheetName As String
Dim dtPeriod As DateTime
strSource = Dts.Variables("sFilePath").Value
'set period to previous month. We only care about the year in this period as the data will be reloaded
'from the file each month
dtPeriod = DateAdd(DateInterval.Month, -1, Today)
Dts.Variables("dtPeriod").Value = dtPeriod
Using mySpreadSheet As SpreadsheetDocument = SpreadsheetDocument.Open(strSource, True)
Dim WorkbookSheets As Sheets
WorkbookSheets = mySpreadSheet.WorkbookPart.Workbook.GetFirstChild(Of Sheets)()
For Each childSheet As Sheet In WorkbookSheets
strSheetName = childSheet.Name
strSheetName = strSheetName.ToLower.Trim
If strSheetName = "sheet1" Then 'process sheet
SetCellValue("A1", "Last Name")
SetCellValue("B1", "First Name")
SetCellValue("C1", "RegionID")
SetCellValue("D1", "RegionName")
'rename sheet for loading
childSheet.Name = "RegionData"
End If
Next
mySpreadSheet.WorkbookPart.Workbook.Save()
mySpreadSheet.Close()
End Using
End Sub
Private Sub SetCellValue(ByVal loc As String, ByVal Val As String)
Dim cell As Cell = New Cell
cell.CellReference = loc
cell.DataType = CellValues.String
cell.CellValue = New CellValue(Val)
End Sub
セルが正しいシートを参照していることを確認するような単純なものだと確信していますが、私が見つけたすべての例は新しいシートを作成するためのものです。
ありがとう