我只是想上传一个excel文件并对其进行一些处理。 并希望逐步显示进度。 我已经尝试了很多,以显示我已经使用Background-worker和Web方法等的真实进度,但现在没有成功,我正在考虑在JavaScript和AJAX的帮助下做到这一点。如何在不使用ActiveXObject的情况下读取javascript中的excel文件?
代码中,我与BackgroundWorker的尝试低于
Imports System.ComponentModel
Imports System.Threading
Public Class _Default
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
End Sub
Dim bw As BackgroundWorker = New BackgroundWorker
Public Shared stopWorker As Boolean = False
Public Function startWorker() As Int16
If Not bw.IsBusy = True Then
bw.RunWorkerAsync()
End If
Return 0
End Function
Public Function testww(sender As Object, e As EventArgs) As Int16
bw.WorkerSupportsCancellation = True
bw.WorkerReportsProgress = True
AddHandler bw.DoWork, AddressOf bw_DoWork
AddHandler bw.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
Return 0
End Function
Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
For i = 1 To 500
If bw.CancellationPending = True Then
e.Cancel = True
Exit For
Else
' Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500)
bw.ReportProgress(i * 0.5)
End If
Next
End Sub
Private Sub bw_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs)
Me.tbProgress.Text = e.ProgressPercentage.ToString() & "%"
End Sub
Private Sub bw_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
If e.Cancelled = True Then
Me.tbProgress.Text = "Canceled!"
ElseIf e.Error IsNot Nothing Then
Me.tbProgress.Text = "Error: " & e.Error.Message
Else
Me.tbProgress.Text = "Done!"
End If
End Sub
Private Shared Sub WorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
Dim worker As BackgroundWorker = TryCast(sender, BackgroundWorker)
If worker IsNot Nothing Then
System.Threading.Thread.Sleep(3000)
If Not stopWorker Then
worker.RunWorkerAsync()
Else
While stopWorker
Thread.Sleep(6000)
End While
worker.RunWorkerAsync()
End If
End If
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
bw.WorkerSupportsCancellation = True
bw.WorkerReportsProgress = True
AddHandler bw.DoWork, AddressOf bw_DoWork
AddHandler bw.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
Dim result = startWorker()
End Sub
End Class
和前端,我只是累改变文本框的值一样
<%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" Async="true" CodeBehind="Default.aspx.vb" Inherits="WebApplication2._Default" %>
<asp:Content runat="server" ID="FeaturedContent" ContentPlaceHolderID="FeaturedContent">
</asp:Content>
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<asp:TextBox ID="tbProgress" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</asp:Content>
请帮帮我。
它是不可能在客户端PC使用Javascript – 2014-10-30 12:12:39
它工作正常,但我想一步完成任务的步骤百分比,它显示在最后,当它以100%的出来从循环读取Excel文件(完成!)状态和用户只能看到“完成!”但我想要1%然后2%然后继续...... 100%然后完成! – 2014-10-30 12:12:46
每当有任何更改时,您需要重新加载进度栏 – 2014-10-30 12:18:13