以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 导出Excel问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=155955) |
-- 作者:gudao123456 -- 发布时间:2020/9/27 22:10:00 -- 导出Excel问题 自定义了一个导出Excel窗口,但老默认为*.xls 导致出现“超过最大的行数65,536”的错误提示,代码如下: ......... Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 MessageBox.Show("你要保存为:" & dlg.FileName,"提示") \'提示用户选择的文件 Else MessageBox.Show("你没有输入导出文件名,如需导出请再次进入","提示") Forms("导出学生信息Excel").close() Return End If 就是把 dlg.Filter= "Excel文件|*.xls" 改为:dlg.Filter= "Excel文件|*.xlsx" 也一样提示错误 为何?谢谢!
|
-- 作者:有点蓝 -- 发布时间:2020/9/27 22:39:00 -- xls 最多支持65,536行,xlsx肯定可以。怎么导的,没看到导出的代码 |
-- 作者:gudao123456 -- 发布时间:2020/9/27 22:56:00 -- 行数少时可以,行数多了就不行了。 代码如下:
Dim tb As Table=CurrentTable Dim ckl As WinForm.CheckedListBox = e.Form.Controls("CheckedListBox1") Dim nms1 As New List(of String) Dim nms As New List(of String) For i As Integer = 0 To ckl.Items.count - 1 \'获取已经勾选的列 If ckl.GetItemChecked(i) Then For Each dc As Col In tb.Cols If dc.caption=ckl.Items(i) Then nms.Add(dc.name) nms1.Add(dc.caption) Exit For End If Next End If Next \' \'End If \'Next If nms.Count = 0 Then MessageBox.Show("至少要选择一列","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return End If \'生成Excel表 Dim dt As Table =tb Dim Book As New XLS.Book Dim Sheet As XLS.Sheet = Book.Sheets(0) For i As Integer = 0 To nms1.count -1 Sheet(0, i).Value = nms1(i) Next For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 For i As Integer = 0 To nms.count -1 Sheet(r + 1, i).Value = dt.rows(r)(nms(i)) Next Next \'保存并打开excel文件 Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xlsx" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 MessageBox.Show("你要保存为:" & dlg.FileName,"提示") \'提示用户选择的文件 Else \' MessageBox.Show("你没有输入导出文件名,如需导出请再次进入","提示") Forms("导出学生信息Excel").close() Return End If Book.Save(dlg.FileName) Dim Proc As New Process Proc.File =dlg.FileName Proc.Start() |
-- 作者:有点蓝 -- 发布时间:2020/9/27 23:09:00 -- 先保存,在打开导入: \'生成Excel表 Dim dt As Table =tb \'保存并打开excel文件 Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xlsx" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 MessageBox.Show("你要保存为:" & dlg.FileName,"提示") \'提示用户选择的文件 Dim Book As New XLS.Book Book.Save(dlg.FileName) Book = New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) For i As Integer = 0 To nms1.count -1 Sheet(0, i).Value = nms1(i) Next For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 For i As Integer = 0 To nms.count -1 Sheet(r + 1, i).Value = dt.rows(r)(nms(i)) Next Next Book.Save(dlg.FileName) Dim Proc As New Process Proc.File =dlg.FileName Proc.Start() Else \' MessageBox.Show("你没有输入导出文件名,如需导出请再次进入","提示") Forms("导出学生信息Excel").close() Return End If |
-- 作者:gudao123456 -- 发布时间:2020/9/27 23:15:00 -- 还是不行 |
-- 作者:有点蓝 -- 发布时间:2020/9/28 8:44:00 -- 我测试没有任何问题。代码没有抄对吧?或者试试安装下面的数据访问组件: http://www.foxtable.com/download/AccessDatabaseEngine.exe [此贴子已经被作者于2020/9/28 8:47:19编辑过]
|
-- 作者:gudao123456 -- 发布时间:2020/9/29 0:05:00 -- OK了 谢谢! |