关于OLEDB生成excel问题

liwenmin 2007-10-10 07:59:56
请问各位大哥,用OLEDB生成excel是否一定要有模板呢?不知是否可以使用一个空的模板?
就目前,我所知道.net生成excel方法共有三种
1、使用流生成
2、使用office的组件
3、使用OLEDB把数据填写在模板中
不知还有没有其它的方法
对以上三种方法我所遇到的问题
1、该方法生成的excel方法,下载下来后,操作保存总是提示:格式什么不兼容功能。。。
2、使用office的组件,好像只能一个人操作,并行操作不了,还有就是权限问题,这个问题到现在还不行。原因是在我本机都可以执行,但当到客户服务器是,所有权限配置都配好,但就是提示操作权限不足!
3、该方法一定要用模板才行,但如果我想用一个空的模板,不知怎么才能填入数据呢?

我对WORD的生成也用了组件实现,同样是在客户机子上无法实现!很急,各位大哥哥,多多指教啊?
...全文
507 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liwenmin 2007-10-15
  • 打赏
  • 举报
回复
这个方法不行呢,朋友 ,说Sheet1在只读数据库中,无法更改?
liwenmin 2007-10-15
  • 打赏
  • 举报
回复
先谢谢上面的朋友!
不过,我使用的是.net1.1 b/s模式,好像你给的方法中有几个组件是没有的
liwenmin 2007-10-11
  • 打赏
  • 举报
回复
有人在吗?
lorchen 2007-10-11
  • 打赏
  • 举报
回复
1、使用二进制:可以参考http://www.cnblogs.com/unruledboy/archive/2005/02/28/110034.html
2、用Excel组件:
m_eapExcel = New Excel.Application
With m_eapExcel
'Try
.Workbooks.Open(m_strExcelPath)
'Catch ex1 As Exception
' .Workbooks.Open(m_strExcelPath, 2, False, Nothing, "", "", True, Excel.XlPlatform.xlWindows, Nothing, Nothing, True, Nothing, False, False, Excel.XlCorruptLoad.xlNormalLoad)
'End Try
m_blnExcel = True
.Worksheets(m_intModuleId).select()

o_dvContent.RowFilter = "ModuleID = " & m_intModuleId & " And IsHead = 1" '单头
For Each o_drMain In o_dvContent.ToTable.Rows
System.Windows.Forms.Application.DoEvents()
.Range(o_drMain("ToAddress")).Select()
.Selection.NumberFormatLocal = "@"
If IsExistsUCase(o_drMain("FieldName")) Then
.Range(o_drMain("ToAddress")).Value = ConvertToRMB(Decimal.Parse(m_dsPrint.Tables("Main").Rows(0).Item(o_drMain("FieldName")).ToString.Trim))
Else
.Range(o_drMain("ToAddress")).Value = m_dsPrint.Tables("Main").Rows(0).Item(o_drMain("FieldName")).ToString
End If
Next
.Range("A1").Select()
.Application.CutCopyMode = False
.ActiveCell.FormulaR1C1 = ""
End With
m_eapExcel.ActiveWorkbook.SaveAs(o_strTempPath)
Try
If m_blnExcel Then
m_eapExcel.Workbooks.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_eapExcel.Workbooks)
o_intGeneration = System.GC.GetGeneration(m_eapExcel.Workbooks)
If o_intGeneration <> 0 Then System.GC.Collect(o_intGeneration) : o_intGeneration = 0
m_blnExcel = False
Else
End If
m_eapExcel.Quit()
Catch ex1 As Exception
WriteLog("clsExcelPrint:KillExcelApplication", Err.Number, Err.Description, ex1.ToString)
m_blnExcel = False
End Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_eapExcel)
o_intGeneration = System.GC.GetGeneration(m_eapExcel)
If o_intGeneration <> 0 Then System.GC.Collect(o_intGeneration) : o_intGeneration = 0
m_eapExcel = Nothing
Else
End If
3、用OLE不需要模版:
'Sql导出Excel
Private Sub Export2Excel()
Try
Dim o_intRow As Integer, o_intCol As Integer
Dim o_strPath As String, o_strConnString As String
Dim o_cnnConnect As OleDbConnection, o_cmdComm As OleDbCommand
Dim o_strCreatedField As String = "", o_strParaField As String = ""
Dim o_strPara As String, o_intItem As Integer

o_strPath = sfdExcel.FileName
If o_strPath.Trim.Length > 0 Then
Me.Cursor = Cursors.WaitCursor
tsBar.Enabled = False
If My.Computer.FileSystem.FileExists(o_strPath) Then My.Computer.FileSystem.DeleteFile(o_strPath)
With dgvJiaoDai
For o_intItem = 0 To CT_LastColumn
If o_intItem = 0 Then
o_strCreatedField = .Columns(o_intItem).HeaderText.Trim & " varchar"
o_strParaField = "@" & .Columns(o_intItem).HeaderText.Trim
Else
o_strCreatedField = o_strCreatedField & ", " & .Columns(o_intItem).HeaderText.Trim & " varchar"
o_strParaField = o_strParaField & ", @" & .Columns(o_intItem).HeaderText.Trim
End If
Next
End With

o_strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & o_strPath & ";Extended Properties=Excel 8.0;"
o_cnnConnect = New OleDbConnection(o_strConnString)
o_cmdComm = New OleDbCommand()
With o_cmdComm
.Connection = o_cnnConnect
.Connection.Open()
.CommandText = "CREATE TABLE Sheet1( " & o_strCreatedField & ")" '建立表结构
.ExecuteNonQuery()
.CommandText = "INSERT INTO Sheet1 VALUES (" & o_strParaField & ")" '建立插入动作的Command
.Parameters.Clear()
For o_intItem = 0 To CT_LastColumn '建立参数
o_strPara = "@" & dgvJiaoDai.Columns(o_intItem).HeaderText.Trim
.Parameters.Add(New OleDbParameter(o_strPara, OleDbType.VarChar))
Next
'遍历DataSet将数据插入新建的Excel文件中
For o_intRow = 0 To m_dsJiaoDai.Tables("Detail").Rows.Count - 1
System.Windows.Forms.Application.DoEvents()
For o_intCol = 0 To CT_LastColumn
.Parameters.Item(o_intCol).Value = m_dsJiaoDai.Tables("Detail").Rows(o_intRow)(o_intCol).ToString() & ""
Next
.ExecuteNonQuery()
Next

.Connection.Close()
End With
tsBar.Enabled = True
Me.Cursor = Cursors.Default
MsgBox("引出Excel成功...", MsgBoxStyle.OkOnly, Me.Text)
Else
End If
Catch ex As Exception
WriteLog(Me.Name & ":Export2Excel", Err.Number, Err.Description, ex.ToString)
End Try
End Sub
liwenmin 2007-10-10
  • 打赏
  • 举报
回复
大哥,不会吧,这都没人回复吗?
liwenmin 2007-10-10
  • 打赏
  • 举报
回复
怎么都没有人答复呢!晕死,我的问题不是很难吧
liwenmin 2007-10-10
  • 打赏
  • 举报
回复
怎么都没人帮我顶啊!!急!各位大哥,小弟不才啊!
liwenmin 2007-10-10
  • 打赏
  • 举报
回复
怎么都没人帮我顶啊!!急!各位大哥,小弟不才啊!

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧