导入excel时数据量大于65536行怎么办?

gshuhugs 2008-07-16 06:19:41


Dim myexcel As New Excel.Application
Dim strSql As String = "select * from mdl_rc_case"
Dim table As New DataTable
table = DB.QueryTable(strSql)'DB是数据库链接类的实例,QueryTable返回的是datatable
myexcel.Application.Workbooks.Add(True)

Dim i, j As Integer
If count_table_rows = 0 Then
Return
End If
'添加标题
For i = 0 To table.Columns.Count - 1
myexcel.Cells(1, i + 1) = table.Columns(i).Caption
Next
'填充数据
For i = 0 To table.Rows.Count - 1
For j = 0 To table.Columns.Count - 1
myexcel.Cells(i + 2, j + 1) = table.Rows(i)(j).ToString()
Next
Next
myexcel.Visible = True

这是我写得导入excel的部分代码,如果数据大于65536行时 写入新的sheet中应该怎么改呢,希望楼上的几位帮帮改改。
小弟将不胜感激涕零。
在下愚昧,看过很多人的帖子了,还是没搞定,请直接给代码吧。
...全文
1470 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
椅子 2008-07-25
  • 打赏
  • 举报
回复
web应用不能用office的application

楼主做个压力测试看看,单机发300个请求,你看看服务器内存!!!
xutao888 2008-07-17
  • 打赏
  • 举报
回复
试试用BCP方式
sytu_hzj 2008-07-17
  • 打赏
  • 举报
回复
如果楼主用的是2003的话,可以采用分列显示的方法,将草果65536的行显示到新的列,我也遇到过同样的情况,给你看看代码:

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelBook = excelApp.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel.Worksheet excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelBook.ActiveSheet;
excelApp.Visible = true;

int rowCount = testRecordDataGridView.Rows.Count - 1;
int columnCount = testRecordDataGridView.Columns.Count;

if (txtBoardNo.Text != "")
{
excelSheet.Name = txtBoardNo.Text;
}
else
{
excelSheet.Name = "所有记录";
}

int sheetCount = rowCount / 65535 + 1;
for (int i = 0; i < sheetCount; i++)
{
for (int j = 1; j <= testRecordDataGridView.Columns.Count; j++)
{
excelSheet.Cells[1, (i * 10) + j] = testRecordDataGridView.Columns[j - 1].HeaderText;
}

string[,] records = new string[65535, columnCount];
for (int row = i * 65535; row < (i + 1) * 65535; row++)
{
if (row < rowCount)
{
for (int col = 0; col < columnCount; col++)
{
records[row % 65535, col] = testRecordDataGridView[col, row].Value.ToString();
}
}
}

excelSheet.get_Range(excelSheet.Cells[2, i * 10 + 1], excelSheet.Cells[65536, i * 10 + 9]).Value2 = records;
}
}
JeffChung 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jinjazz 的回复:]
除了用2007之外就只能分页了
[/Quote]
luckyboy101 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 minhua1983 的回复:]
超过65536就新加个SHEET
[/Quote]
myexcel.Application.Workbooks.Add()
winner2050 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yizia 的回复:]
应该用odbc连接。

你的这种方法不推荐,一旦出错,服务端会出现一个死进程
[/Quote]

没错,应该当电子表格是数据库来操纵,这样速度快很多.

不过OleDb 连接会更好哦.
椅子 2008-07-17
  • 打赏
  • 举报
回复
应该用odbc连接。

你的这种方法不推荐,一旦出错,服务端会出现一个死进程
jl_lsj 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 minhua1983 的回复:]
超过65536就新加个SHEET
[/Quote]
brunce 2008-07-17
  • 打赏
  • 举报
回复
加个SHEET
minhua1983 2008-07-17
  • 打赏
  • 举报
回复
超过65536就新加个SHEET
rainspacexiaobo 2008-07-16
  • 打赏
  • 举报
回复
万一那样勒。 就倒2份呗 那有什么办法捏 。
suiqirui19872005 2008-07-16
  • 打赏
  • 举报
回复
Excel2007 最大行数限制 : 1,1048,576 行 (2^20)
jinjazz 2008-07-16
  • 打赏
  • 举报
回复
除了用2007之外就只能分页了
紫气东来_999 2008-07-16
  • 打赏
  • 举报
回复
升级为 OFFICE2007 :

Excel2007 最大行数限制 : 1,1048,576 行 (2^20)
宝_爸 2008-07-16
  • 打赏
  • 举报
回复
试一试app.Worksheets.Add()

61,825

社区成员

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

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

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

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