如何将数据导入word,excel,文本文件的类

有好的东东,当然与大家一起分享了,大家一起学习了
None.gif ' ************************************
None.gif'
功能:实现表数据输出到word.excel.txt
None.gif'
时间:2007-07-11
None.gif'
编写人:王朝东
None.gif'
QQ:280685904
None.gif'
操作:编写
None.gif'
************************************
None.gif
Imports  System
None.gif
Imports  System.Data
None.gif
Imports  System.Drawing
None.gif
Imports  System.Data.SqlClient
None.gif
Imports  System.IO
ExpandedBlockStart.gifContractedBlock.gif
Public   Class DatasTo Class DatasTo
InBlock.gif    
Private Const WORDPOSTFIX = ".doc"
InBlock.gif    
Private Const EXCELPOSTFIX = ".xls"
InBlock.gif    
Private Const TXTPOSTFIX = ".txt"
InBlock.gif    
Private Const DATADISTANCE = 5
InBlock.gif    
Private Const TABDISTANCE = 8
InBlock.gif    
''' <summary>
InBlock.gif
    '''  将datatable里的数据导出到Excel文件
InBlock.gif
    ''' </summary>
InBlock.gif
    ''' <param name="dt">需要处理的数据表</param>
InBlock.gif
    ''' <param name="myFilename">包含有文件路径的文件名</param>
InBlock.gif
    ''' <param name="myCaption">生成文件的标题名</param>
InBlock.gif
    ''' <remarks></remarks>
ExpandedSubBlockStart.gifContractedSubBlock.gif
    Public Sub ToExcel()Sub ToExcel(ByVal dt As DataTable, ByVal myFilename As StringOptional ByVal myCaption As String = "")
InBlock.gif        
If myCaption = "" Then
InBlock.gif            myCaption 
= dt.TableName.ToString
InBlock.gif        
End If
InBlock.gif        
Dim filename As String = myFilename
InBlock.gif        
If filename.Length > 4 Then
InBlock.gif            
If filename.Substring(filename.Length - 44<> ".xls" Then
InBlock.gif                filename 
= myFilename + EXCELPOSTFIX
InBlock.gif            
End If
InBlock.gif        
End If
InBlock.gif        
Dim No As Object = System.Reflection.Missing.Value
InBlock.gif
InBlock.gif        
Dim myExcel As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.ApplicationClass()
InBlock.gif        myExcel.Application.Workbooks.Add(No)
InBlock.gif
InBlock.gif        
'把Dataset中的数据插入excel文件中
InBlock.gif
        Dim totalCount As Integer = 0
InBlock.gif        
Dim row As Integer = dt.Rows.Count
InBlock.gif        
Dim column As Integer = dt.Columns.Count
InBlock.gif
InBlock.gif        
Dim i As Integer
InBlock.gif        
'通过循环添加列标题
InBlock.gif
        For i = 0 To column - 1
InBlock.gif            myExcel.Cells(totalCount 
+ 21 + i) = dt.Columns(i).ColumnName
InBlock.gif        
Next
InBlock.gif        
'通过循环实现数据的填充
InBlock.gif
        For i = 0 To row - 1
InBlock.gif            
Dim j As Integer
InBlock.gif            
For j = 0 To column - 1
InBlock.gif                myExcel.Cells(totalCount 
+ 3 + i, 1 + j) = dt.Rows(i)(j).ToString()
InBlock.gif            
Next
InBlock.gif        
Next
InBlock.gif        totalCount 
= totalCount + row + 4
InBlock.gif        
'设置表的样式
InBlock.gif
        Dim CaptionRange As Microsoft.Office.Interop.Excel.Range '设置标题样式
InBlock.gif
        CaptionRange = myExcel.Range(myExcel.Cells(11), myExcel.Cells(1, column))
InBlock.gif        CaptionRange.Font.Name 
= "黑体" '设标题为黑体字
InBlock.gif
        CaptionRange.Font.Bold = True  '标题字体加粗
InBlock.gif
        CaptionRange.MergeCells = True
InBlock.gif        CaptionRange.WrapText 
= False
InBlock.gif        CaptionRange.Orientation 
= 0
InBlock.gif        CaptionRange.AddIndent 
= False
InBlock.gif        CaptionRange.IndentLevel 
= 0
InBlock.gif        CaptionRange.ShrinkToFit 
= False
InBlock.gif        CaptionRange.FormulaR1C1 
= myCaption
InBlock.gif        CaptionRange.HorizontalAlignment 
= 3 '1 常规 2 靠左 3表示居中对齐,8表示分散对齐
InBlock.gif
        Dim BordersRange As Microsoft.Office.Interop.Excel.Range
InBlock.gif
InBlock.gif        BordersRange 
= myExcel.Range(myExcel.Cells(21), myExcel.Cells(row + 2, column))
InBlock.gif        BordersRange.Borders.LineStyle 
= 0 '设表格边框样式 0没有边框
InBlock.gif

InBlock.gif        
'保存excel文件到指定的目录下
InBlock.gif
        myExcel.ActiveWorkbook._SaveAs(filename, No, No, No, No, No, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, No, No, No, No)
InBlock.gif
InBlock.gif        
'让生成的excel文件可见
InBlock.gif
        myExcel.Visible = True
ExpandedSubBlockEnd.gif    
End Sub

InBlock.gif    
''' <summary>
InBlock.gif
    '''  将datatable里的数据导出到Word文件
InBlock.gif
    ''' </summary>
InBlock.gif
    ''' <param name="dt">数据表</param>
InBlock.gif
    ''' <param name="myFilename">保存的文件名</param>
InBlock.gif
    ''' <param name="myCaption">默认为表的TableName</param>
InBlock.gif
    ''' <remarks></remarks>
ExpandedSubBlockStart.gifContractedSubBlock.gif
    Public Sub ToWord()Sub ToWord(ByVal dt As DataTable, ByVal myFilename As StringOptional ByVal myCaption As String = "")
InBlock.gif        
If myCaption = "" Then
InBlock.gif            myCaption 
= dt.TableName.ToString
InBlock.gif        
End If
InBlock.gif        
Dim filename As String = myFilename
InBlock.gif        
If filename.Length > 4 Then
InBlock.gif            
If filename.Substring(filename.Length - 44<> ".doc" Then
InBlock.gif                filename 
= myFilename + WORDPOSTFIX
InBlock.gif            
End If
InBlock.gif        
End If
InBlock.gif        
Dim tableBehavior = Microsoft.Office.Interop.Word.WdDefaultTableBehavior.wdWord9TableBehavior
InBlock.gif        
Dim autoFitBehavior = Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitFixed
InBlock.gif
InBlock.gif        
Dim unit = Microsoft.Office.Interop.Word.WdUnits.wdStory
InBlock.gif        
Dim extend = System.Reflection.Missing.Value
InBlock.gif        
Dim breakType = Int(Microsoft.Office.Interop.Word.WdBreakType.wdSectionBreakNextPage)
InBlock.gif
InBlock.gif        
Dim count = 1
InBlock.gif        
Dim character = Microsoft.Office.Interop.Word.WdUnits.wdCharacter
InBlock.gif        
'no
InBlock.gif
        Dim No = System.Reflection.Missing.Value
InBlock.gif
InBlock.gif        
'把数据导入word文件中
InBlock.gif
        Dim myWord As Microsoft.Office.Interop.Word.Application = New Microsoft.Office.Interop.Word.ApplicationClass()
InBlock.gif        
Dim myDoc As Microsoft.Office.Interop.Word.Document = New Microsoft.Office.Interop.Word.DocumentClass()
InBlock.gif        myDoc 
= myWord.Documents.Add(No, No, No, No) 'no
InBlock.gif
        myDoc.Activate()
InBlock.gif
InBlock.gif        
'向把datatable中的表插入到word的文件中()
InBlock.gif
        Dim totalTable As Integer
InBlock.gif        myWord.Application.Selection.TypeText(myCaption)
InBlock.gif        myWord.Application.Selection.ParagraphFormat.Alignment 
= Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter
InBlock.gif        myWord.Application.Selection.TypeParagraph()
InBlock.gif        myWord.Application.Selection.TypeParagraph()
InBlock.gif        
Dim para As Microsoft.Office.Interop.Word.Range = myWord.Application.Selection.Range
InBlock.gif        myDoc.Tables.Add(para, dt.Rows.Count 
+ 1, dt.Columns.Count, tableBehavior, autoFitBehavior)
InBlock.gif
InBlock.gif        
'通过循环添加列标题
InBlock.gif
        Dim column As Integer
InBlock.gif        
Dim row As Integer
InBlock.gif        
For column = 0 To dt.Columns.Count - 1
InBlock.gif            myDoc.Tables.Item(totalTable 
+ 1).Cell(1, column + 1).Range.InsertBefore(dt.Columns(column).ColumnName.Trim)
InBlock.gif        
Next
InBlock.gif        
'通过循环实现数据的填充
InBlock.gif
        For row = 0 To dt.Rows.Count - 1
InBlock.gif            
For column = 0 To dt.Columns.Count - 1
InBlock.gif                myDoc.Tables.Item(totalTable 
+ 1).Cell(row + 2, column + 1).Range.InsertBefore(dt.Rows(row)(column).ToString().Trim())
InBlock.gif            
Next
InBlock.gif        
Next
InBlock.gif        myWord.Application.Selection.EndKey(unit, extend)
InBlock.gif        myWord.Application.Selection.TypeParagraph()
InBlock.gif        myWord.Application.Selection.TypeParagraph()
InBlock.gif        myWord.Application.Selection.InsertBreak(breakType)
InBlock.gif
InBlock.gif        myWord.Application.Selection.TypeBackspace()
InBlock.gif        myWord.Application.Selection.Delete(character, count)
InBlock.gif        myWord.Application.Selection.HomeKey(unit, extend)
InBlock.gif
InBlock.gif        
'保存word文件到指定的目录下,文件名   用系统时间生成精确到毫秒
InBlock.gif
        myDoc.SaveAs(filename, No, No, No, No, No, No, No, No, No, No)
InBlock.gif
InBlock.gif        
'让生成的word文件可见
InBlock.gif
        myWord.Visible = True
ExpandedSubBlockEnd.gif    
End Sub

InBlock.gif    
''' <summary>
InBlock.gif
    ''' 将datatable里的数据导出到Text文件
InBlock.gif
    ''' </summary>
InBlock.gif
    ''' <param name="dt">数据表</param>
InBlock.gif
    ''' <param name="myFilename">保存的文件名</param>
InBlock.gif
    ''' <param name="myCaption">默认为表的TableName</param>
InBlock.gif
    ''' <remarks></remarks>
ExpandedSubBlockStart.gifContractedSubBlock.gif
    Public Sub ToText()Sub ToText(ByVal dt As DataTable, ByVal myFilename As StringOptional ByVal myCaption As String = "")
InBlock.gif        
If myCaption = "" Then
InBlock.gif            myCaption 
= dt.TableName.ToString
InBlock.gif        
End If
InBlock.gif        
Dim filename As String = myFilename
InBlock.gif        
If filename.Length > 4 Then
InBlock.gif            
If filename.Substring(filename.Length - 44<> ".txt" Then
InBlock.gif                filename 
= myFilename + TXTPOSTFIX
InBlock.gif            
End If
InBlock.gif        
End If
InBlock.gif        
Dim file As FileInfo = New FileInfo(myFilename)
InBlock.gif        
Dim textFile As StreamWriter
InBlock.gif        textFile 
= file.CreateText()
InBlock.gif        
Dim row As Integer = dt.Rows.Count '统计datatable中当前表的行数
InBlock.gif
        Dim column As Integer = dt.Columns.Count '统计datatable中当前表的列数
InBlock.gif
        Dim totalLength As Integer = 0 '用于统计当前表中每列记录中字符数最长的字符串的长度之和
InBlock.gif
        Dim titleLength As Integer = 0  '用于统计标题的长度(datatable中的表名的length+"表的数据如下"的length)
InBlock.gif
        Dim columnLength(column) As Integer  '统计每列记录中字符数最长的字符串的长度
InBlock.gif
        Dim i As Integer
InBlock.gif        
Dim j As Integer
InBlock.gif        
Dim k As Integer
InBlock.gif        
For i = 0 To column - 1
InBlock.gif            columnLength(i) 
= dt.Columns(i).ColumnName.ToString().Length
InBlock.gif        
Next
InBlock.gif        
For i = 0 To row - 1
InBlock.gif            
For j = 0 To column - 1
InBlock.gif                
If (dt.Rows(i)(j).ToString().Length > columnLength(j)) Then
InBlock.gif                    columnLength(j) 
= dt.Rows(i)(j).ToString().Length
InBlock.gif                
End If
InBlock.gif            
Next
InBlock.gif        
Next
InBlock.gif        
For i = 0 To column - 1
InBlock.gif            totalLength 
= totalLength + columnLength(i) + DATADISTANCE
InBlock.gif        
Next
InBlock.gif        totalLength 
= totalLength + 2 * TABDISTANCE - DATADISTANCE
InBlock.gif
InBlock.gif        
'统计标题的长度(datatable的length)
InBlock.gif
        titleLength = myCaption.Length
InBlock.gif
InBlock.gif        
'把标题写入.txt文件中
InBlock.gif
        For i = 0 To Int((totalLength - titleLength) / 2- 1
InBlock.gif            textFile.Write(
" ")
InBlock.gif        
Next
InBlock.gif
InBlock.gif        textFile.Write(myCaption)
InBlock.gif        textFile.WriteLine()
InBlock.gif        
For i = 0 To totalLength - 1
InBlock.gif            textFile.Write(
"*")
InBlock.gif        
Next
InBlock.gif        textFile.WriteLine()
InBlock.gif        textFile.Write(
"\t")
InBlock.gif
InBlock.gif        
'把datatbale中当前表的字段名写入.txt文件中
InBlock.gif
        For i = 0 To column - 1
InBlock.gif            textFile.Write(dt.Columns(i).ColumnName.ToString())
InBlock.gif            
For k = 0 To columnLength(i) - dt.Columns(i).ColumnName.ToString().Length + DATADISTANCE - 1
InBlock.gif                textFile.Write(
" ")
InBlock.gif            
Next
InBlock.gif        
Next
InBlock.gif        textFile.WriteLine()
InBlock.gif        
For i = 0 To totalLength - 1
InBlock.gif            textFile.Write(
"-")
InBlock.gif        
Next
InBlock.gif        textFile.WriteLine()
InBlock.gif        textFile.Write(
"\t")
InBlock.gif
InBlock.gif        
'把datatable中当前表的数据写入.txt文件中
InBlock.gif
        For i = 0 To row - 1
InBlock.gif            
For j = 0 To column - 1
InBlock.gif                textFile.Write(dt.Rows(i)(j).ToString())
InBlock.gif                
For k = 0 To columnLength(j) - dt.Rows(i)(j).ToString().Length + DATADISTANCE - 1
InBlock.gif                    textFile.Write(
" ")
InBlock.gif                
Next
InBlock.gif            
Next
InBlock.gif            textFile.WriteLine()
InBlock.gif            textFile.Write(
"\t")
InBlock.gif        
Next
InBlock.gif        textFile.WriteLine()
InBlock.gif        
For i = 0 To totalLength - 1
InBlock.gif            textFile.Write(
"-")
InBlock.gif        
Next
InBlock.gif        textFile.WriteLine()
InBlock.gif        textFile.WriteLine()
InBlock.gif        textFile.WriteLine()
InBlock.gif        
'关闭当前的StreamWriter流
InBlock.gif
        textFile.Close()
InBlock.gif        System.Diagnostics.Process.Start(file.FullName)
ExpandedSubBlockEnd.gif    
End Sub

ExpandedBlockEnd.gif
End Class

None.gif
学习的也比较浅,朝东献丑了,大家还是有什么意见或好的观点及时交流了

转载于:https://www.cnblogs.com/chaodongwang/archive/2007/07/29/835257.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值