Wednesday, May 28, 2014

NPOI delete cell background color

Imports NPOI.SS.UserModel
Imports NPOI.HSSF.UserModel
Imports System.IO
--------------------------------------
Public Sub DeleteCellBackColor()
        Dim srcWB As HSSFWorkbook = Nothing
        Try
            Using fs As New FileStream("C:\temp\Book1.xls", FileMode.Open, FileAccess.Read)
                srcWB = New HSSFWorkbook(fs, True)
            End Using

            'Get sheet by index
            Dim sheet As HSSFSheet = srcWB.GetSheetAt(0)

            For rowNum As Integer = 0 To sheet.LastRowNum
                'Check row is exist
                Dim row As HSSFRow = sheet.GetRow(rowNum)
                If row Is Nothing Then Continue For

                For clmNum As Integer = 0 To row.LastCellNum
                    'Check cell is exist
                    Dim cell As HSSFCell = row.GetCell(clmNum)
                    If cell Is Nothing Then Continue For

                    'Check cell back color is exist
                    Dim cellStyle As HSSFCellStyle = cell.CellStyle
                    If cellStyle Is Nothing Then Continue For

                    'Delete cell back color
                    cellStyle.FillPattern = FillPattern.NoFill
                Next
            Next

            'Save file
            Using fs As New FileStream("C:\temp\Book2.xls", FileMode.OpenOrCreate, FileAccess.Write)
                srcWB.Write(fs)
            End Using
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub
-----------------------
Input file

----------------------------------------------
Output file



Monday, April 7, 2014

NPOI Get last used row vb.net

    Public Function GetLastRowNum(Sheet As HSSFSheet) As Integer
        Dim lastRowNum As Integer = Sheet.LastRowNum
            For rowNum As Integer = lastRowNum To 0 Step -1
                Dim row As HSSFRow = Sheet.GetRow(rowNum)
                If row Is Nothing Then Continue For

                For clmNum As Integer = 0 To row.LastCellNum
                    Dim cellVal = GetCellValue(Sheet,rowNum, clmNum)
                    If Not String.IsNullOrWhiteSpace(cellVal) Then
                        Return rowNum
                    End If
                Next
            Next
        Return lastRowNum
    End Function


 Public Function GetCellValue(ByVal sheet As HSSFSheet, ByVal rowNum As Integer, ByVal clmNum As Integer) As String
        Dim contents As String = String.Empty

        Try
            Dim row As HSSFRow = sheet.GetRow(rowNum)
            If row IsNot Nothing Then
                Dim cell As HSSFCell = row.GetCell(clmNum)
                If cell IsNot Nothing Then
                    If cell.CellType = NPOI.SS.UserModel.CellType.STRING Then
                        contents = cell.StringCellValue
                    ElseIf cell.CellType = NPOI.SS.UserModel.CellType.BLANK Then
                        contents = cell.StringCellValue
                    ElseIf cell.CellType = NPOI.SS.UserModel.CellType.NUMERIC Then
                        If HSSFDateUtil.IsCellDateFormatted(cell) Then
                            contents = cell.DateCellValue
                        Else
                            contents = cell.NumericCellValue
                        End If
                    ElseIf cell.CellType = NPOI.SS.UserModel.CellType.BOOLEAN Then
                        contents = cell.BooleanCellValue
                    ElseIf cell.CellType = NPOI.SS.UserModel.CellType.ERROR Then
                        contents = cell.ErrorCellValue
                    ElseIf cell.CellType = NPOI.SS.UserModel.CellType.Unknown Then
                        contents = cell.StringCellValue
                    ElseIf cell.CellType = NPOI.SS.UserModel.CellType.FORMULA Then
                        Select Case cell.CachedFormulaResultType
                            Case NPOI.SS.UserModel.CellType.NUMERIC
                                contents = cell.NumericCellValue
                            Case NPOI.SS.UserModel.CellType.STRING
                                contents = cell.StringCellValue
                        End Select
                    End If
                End If
            End If
        Catch ex As Exception
            ErrorLogWriter.Lines.Add(ex.Message)
        End Try

        Return contents
    End Function

Thursday, October 10, 2013

npoi create cell drop down list in excel

'NPOI Download from here:http://npoi.codeplex.com/releases
Imports NPOI.HSSF
Imports NPOI.HSSF.UserModel
Imports NPOI.SS.UserModel
'-------------------------------- 
Public Sub CreateCellDropDownList()
        Dim wb As New HSSFWorkbook()
 
        'Create an entry of DocumentSummaryInformation  
        Dim dsi As DocumentSummaryInformation = PropertySetFactory.CreateDocumentSummaryInformation()
        dsi.Company = "MY COMPANY"
        wb.DocumentSummaryInformation = dsi
 
        'Create an entry of SummaryInformation  
        Dim si As SummaryInformation = PropertySetFactory.CreateSummaryInformation()
        si.Subject = "NPOI DEMO"
        wb.SummaryInformation = si
 
        'シートを追加する
        Dim sheet As HSSFSheet = wb.CreateSheet
 
        'データの入力規則の「元の値」を定義する
        Dim dataList As String() = New String() {"aaaa", "bbbb", "cccc", "dddd"}
 
        'データの入力規則を設定するセルを設定する
        Dim addList As New CellRangeAddressList(0, 0, 0, 0)
 
        Dim dvConstraint As DVConstraint = dvConstraint.CreateExplicitListConstraint(dataList)
 
        'データの入力規則を定義する
        Dim dataValidation As New HSSFDataValidation(addList, dvConstraint)
 
        'ドロップダウンリストから選択できるようにする
        dataValidation.SuppressDropDownArrow = False
 
        'データの入力規則を設定する
        sheet.AddValidationData(dataValidation)
 
        Using fs As New FileStream("C:\temp\celldropdown.xls", FileMode.OpenOrCreate, FileAccess.Write)
            wb.Write(fs)
        End Using
 
    End Sub

Tuesday, October 1, 2013

Open xlsx and read data or edit data

Public Sub ReadXlsx(FilePath As String)
        Dim wb As XSSFWorkbook = Nothing
        Try
            'Open book here
            Using fs As New FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Read)
                wb = New XSSFWorkbook(fs)
            End Using
 
            'Get sheet by the name
            Dim sht1 As XSSFSheet = wb.GetSheet("Sheet1")
 
            'Get sheet by the index
            Dim sht2 As XSSFSheet = wb.GetSheetAt(1)
 
            'Get userd last row
            Dim lastRow As Integer = sht1.LastRowNum
 
            'Get lastColumn(every singal row has last column)
            Dim lastClm As Integer = sht1.GetRow(0).LastCellNum
 
            'Get cell 'A1'
            Dim cell1 As XSSFCell = sht1.GetRow(0).GetCell(0)
 
            'Get CellStyle
            Dim cell1Style As XSSFCellStyle = cell1.CellStyle
 
            'Get cell value(Cell has type; better to check type and then get cell value)
            Dim cellvalue As String = cell1.StringCellValue
 
            'Set cell value(Before set cell value needs to check cell is exist)
            cell1.SetCellValue("MY TEXT")
 
            'Create row
            Dim row1 As XSSFRow = sht1.GetRow(0)
            If row1 Is Nothing Then sht1.CreateRow(0)
 
            'Create cell
            Dim cell2 As XSSFCell = row1.GetCell(1)
            If cell2 Is Nothing Then row1.CreateCell(1)
 
 
        Catch ex As Exception
            Console.Write(ex.Message)
        End Try
 End Sub

Thursday, September 26, 2013

Create new MS Word document

Imports System.IO
Imports NPOI.XWPF.UserModel
'-------------------------------------------------

Private Sub btnCreateNewDocument_Click(sender As Object, e As EventArgs) Handles btnCreateNewDocument.Click
        'Create new document
        Dim wDoc As New XWPFDocument
 
        'Create new paragraph
        Dim p1 As XWPFParagraph = wDoc.CreateParagraph()
        With p1
            .SetAlignment(ParagraphAlignment.CENTER)
            .SetBorderBottom(Borders.DOUBLE)
            .SetBorderTop(Borders.DOUBLE)
 
            .SetBorderRight(Borders.DOUBLE)
            .SetBorderLeft(Borders.DOUBLE)
            .SetBorderBetween(Borders.SINGLE)
 
            .SetVerticalAlignment(TextAlignment.TOP)
 
            'Create new range
            Dim r1 As XWPFRun = .CreateRun()
            With r1
                .SetBold(True)
                .SetText("(Hume Tumse Pyaar Kitna Yeh Hum Nahin Jaante")
                .SetBold(True)
                .SetFontFamily("Courier")
                .SetUnderline(UnderlinePatterns.DotDotDash)
                .SetTextPosition(100)
            End With
        End With
 
        Dim p2 As XWPFParagraph = wDoc.CreateParagraph()
        With p2
            p2.SetAlignment(ParagraphAlignment.RIGHT)
 
            'BORDERS
            .SetBorderBottom(Borders.DOUBLE)
            .SetBorderTop(Borders.DOUBLE)
            .SetBorderRight(Borders.DOUBLE)
            .SetBorderLeft(Borders.DOUBLE)
            .SetBorderBetween(Borders.SINGLE)
 
            Dim r2 As XWPFRun = .CreateRun()
            With r2
                .SetText("Magar Jee Nahin Sakte Tumhaare Bina) (2)")
                .SetStrike(True)
                .SetFontSize(20)
            End With
 
            Dim r3 As XWPFRun = .CreateRun()
            With r3
                .SetText("Hume Tumse Pyaar")
                .SetStrike(True)
                .SetFontSize(20)
                .SetSubscript(VerticalAlign.SUPERSCRIPT)
            End With
        End With
 
        Dim p3 As XWPFParagraph = wDoc.CreateParagraph()
        With p3
            .SetWordWrap(True)
            .SetPageBreak(True)
 
            'p3.SetAlignment(ParagraphAlignment.DISTRIBUTE);
            .SetAlignment(ParagraphAlignment.BOTH)
            .SetSpacingLineRule(LineSpacingRule.EXACT)
 
            .SetIndentationFirstLine(600)
 
            Dim r4 As XWPFRun = .CreateRun()
            With r4
                .SetTextPosition(20)
                .SetText("Suna Gham Judaai Ka Uthaate Hai Log Jaane Zindagi Kaise Bitaate Hai Log" +
                         "Din Bhi Yahaan To Lage Baras Ke Samaan " +
                         "Hume Intezaar Kitna Yeh Hum Nahin Jaante" +
                         "Magar Jee Nahin Sakte Tumhaare Bina " +
                         "Hume Tumse Pyaar")
 
                .AddBreak(BreakType.PAGE)
 
                .SetText("Tumhe Koi Aur Dekhe To Jalta Hai dil " +
                         "Badi Mushkilon Se Phir Sambhalta Hai dil " +
                         "That flesh is heir to, 'tis a consummation " +
                         "Kya Kya Jatan Karte Hain Tumhe Kya Pataa " +
                         "Yeh Dil Beqaraar Kitna Yeh Hum Nahin Jaante Magar " +
                         "Jee Nahin Sakte Tumhare Bina")
                .SetItalic(True)
            End With
 
            Dim r5 As XWPFRun = p3.CreateRun()
            With r5
                .SetTextPosition(-10)
                .SetText("Hume Tumse Pyaar Kitna Yeh Hum Nahin Jaante")
                .AddCarriageReturn()
                .SetText("Magar Jee Nahin Sakte Tumhaare Bina, " +
                         "Hume Tumse Pyaar")
                .AddBreak()
 
                .SetText("Tera mujhse Hai Pehle Ka Naata Koi, " +
                         "Yoonhi Nahin Dil Lubhaata Koi,")
 
                .AddBreak(BreakClear.ALL)
                .SetText("Mera Tujhse Hai Pehle Ka Naata Koi, " +
                         "Yoonhi Nahin Dil Lubhaata Koi .......")
            End With
        End With
 
        'Save file
        Dim filePath As String = "C:\SampleFile2.docx"
        Using fs As New FileStream(filePath, FileMode.Create)
            wDoc.Write(fs)
        End Using
 
        MessageBox.Show("Done!", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information)
  End Sub

Read word document

Imports System.IO
Imports NPOI.XWPF.UserModel
 
Public Class Form1
    Private Sub btnReadDocument_Click(sender As Object, e As EventArgs) Handles btnReadDocument.Click
        Dim wDoc As XWPFDocument = Nothing
        Dim filePath As String = "C:\sample2\sample-file.docx"
 
        Using fs As New FileStream(filePath, FileMode.Open)
            wDoc = New XWPFDocument(fs)
        End Using
 
        For Each prg As XWPFParagraph In wDoc.Paragraphs
            Console.WriteLine(prg.GetParagraphText)
        Next
    End Sub
End Class

Thursday, September 12, 2013

Create,Open,Delete worksheet (シート作成、取得、削除)

 Private Sub CreateOnenDeletSheet()
        Dim wb As HSSFWorkbook = Nothing
        Try
            Using fs As New FileStream("ExcelFile.xls", FileMode.Open, FileAccess.Read)
                wb = New HSSFWorkbook(fs, True)
            End Using
 
            'ワークブック内のシート数を確認する
            Dim shtCount As Integer = wb.NumberOfSheets
 
            'インデックスを指定して取得する
            Dim idx As Integer = 0
            Dim shtByidx As HSSFSheet = wb.GetSheetAt(idx)
 
            'シート名を指定して取得する
            Dim shtName As String = "Sheet1"
            Dim shtByName As HSSFSheet = wb.GetSheet(shtName)
 
            '新規シートを作成する
            Dim sheet1 As HSSFSheet = wb.CreateSheet()
 
            '名称を指定してシートを作成する
            Dim sheet2 As HSSFSheet = wb.CreateSheet("Sheet2")
 
            'シート名[sheet1]を3シート目に移動する
            Dim moveShtName As String = "Sheet1"
            Dim moveTo As Integer = 2
            wb.SetSheetOrder(moveShtName, moveTo)
 
            '1シート目を削除する
            Dim dltSht As Integer = 0
            wb.RemoveSheetAt(dltSht)
 
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
 
    End Sub