VB.NET OpenXml 修改制定Worksheet的特定单元格(外加log4net应用)

app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="a.log"></file>
      <appendToFile value="true"></appendToFile>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d]-%p:%c=>%m%n"></conversionPattern>
      </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d]-%p:%c=>%m%n"></conversionPattern>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"></level>
      <appender-ref ref="FileAppender"></appender-ref>
    </root>
    <logger name="MyLogger">
      <level value="DEBUG"></level>
      <appender-ref ref="FileAppender"></appender-ref>
    </logger>
  </log4net>
</configuration>

Module1.vb

Imports System.Windows.Forms
Imports System.IO
Imports log4net
Imports DocumentFormat.OpenXml
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Spreadsheet

<Assembly: log4net.Config.XmlConfiguratorAttribute(Watch:=True)> 
Module Module1
    Dim logger As ILog = log4net.LogManager.GetLogger(GetType(Module1))

    <STAThread()>
    Sub Main()
        Dim OFD As New OpenFileDialog
        Dim Original As String
        Dim Target As String
        Dim WbP As WorkbookPart
        Dim Sht As Sheet
        Dim WsP As WorksheetPart
        Dim Shd As SheetData
        Dim Row As Row
        Dim Cell As Cell

        OFD.Filter = "Excel Document|*.xlsx"
        OFD.Multiselect = False
        OFD.ShowDialog()

        Original = OFD.FileName
        logger.Info("Original File Path :" & Original)
        Target = AppDomain.CurrentDomain.BaseDirectory & "Test.xlsx"
        logger.Info("Target File Path :" & Target)
        File.Copy(Original, Target, True)
        logger.Info("File Copied")

        Using SSD As SpreadsheetDocument = SpreadsheetDocument.Open(Target, True)
            logger.Info("Spreadsheet Document Open")
            WbP = SSD.WorkbookPart
            Sht = WbP.Workbook.Descendants(Of Sheet)() _
                .Where(Function(S) S.Name = "Sheet1").FirstOrDefault()
            logger.Info("Sheet Id : " & Sht.Id.Value)
            WsP = WbP.GetPartById(Sht.Id)
            If Not WsP Is Nothing Then
                logger.Info("Get the WorksheetPart")
                Shd = WsP.Worksheet.Descendants(Of SheetData)().FirstOrDefault()
                Row = Shd.Descendants(Of Row)() _
                    .Where(Function(R) R.RowIndex.Value = 3).FirstOrDefault()
                logger.Info("Retrieve the Row")
                If Not Row Is Nothing Then
                    logger.Info("Row exists")
                    Cell = Row.Descendants(Of Cell)() _
                        .Where(Function(C) C.CellReference = "B3") _
                        .FirstOrDefault()
                    logger.Info("Retrieve the Cell")
                    If Not Cell Is Nothing Then
                        logger.Info("Cell exists")
                        Cell.CellValue.Text = "123456"
                    Else
                        logger.Info("Cell doesn't exist")
                        Cell = New Cell
                        Cell.CellReference = "B3"
                        Cell.CellValue = New CellValue
                        Cell.CellValue.Text = "123456"
                        Row.Append(Cell)
                        logger.Info("Append the cell")
                    End If
                    WbP.Workbook.Save()
                    logger.Info("Save changes")
                Else
                    logger.Info("Row doesn't exist")
                    Row = New Row
                    Row.RowIndex = 3
                    Cell = New Cell
                    Cell.CellReference = "B3"
                    Cell.CellValue = New CellValue
                    Cell.CellValue.Text = "123456"
                    Row.Append(Cell)
                    logger.Info("Append the cell")
                    Shd.Append(Row)
                    logger.Info("Append the row")
                End If
            Else
                logger.Error("WorksheetPart doesn't exist")
            End If
            Console.WriteLine("Finished")
            Console.ReadKey()
        End Using
    End Sub

End Module



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值