当前位置:编程学习 > XML/UML >>

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

app.config

[html]
<?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

[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 
       &nb

补充:软件开发 , Vb ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,