作成csv

 
'******************************************************************************
'
*                                                                            *
'
*                      Comma Separated Value Data Class                      *
'
*                                                                            *
'
*                             By John Priestley                              *
'
*                                                                            *
'
******************************************************************************
'
'
 History
'
 ~~~~~~~
'
 31 May 2005  1.02 - Update: Now correctly identifies the last field if it is blank.
'
 31 May 2005  1.01 - Update: Changed LoadCSV's optional parameter to overloaded function
'
 27 May 2005  1.00 - First Release
'
Imports System.Data.SqlClient
Imports System.Data
Imports System.IO
Imports System.Text.RegularExpressions

Public Class CSVData
    
Implements IDisposable

    
Dim dsCSV As DataSet
    
Dim mSeparator As Char = ","
    
Dim mTextQualifier As Char = """"
    
Dim mData() As String
    
Dim mHeader As Boolean

    
Private regQuote As New Regex("^(")(.*)(")(s*,)(.*)$", RegexOptions.IgnoreCase + RegexOptions.RightToLeft)
    
Private regNormal As New Regex("^([^,]*)(s*,)(.*)$", RegexOptions.IgnoreCase + RegexOptions.RightToLeft)
    
Private regQuoteLast As New Regex("^(")(["*]{2,})(")$", RegexOptions.IgnoreCase)
    
Private regNormalLast As New Regex("^.*$", RegexOptions.IgnoreCase)

    
Protected Disposed As Boolean

#Region " Load CSV "
    
'
    ' Load CSV
    '
    Public Sub LoadCSV(ByVal CSVFile As String)
        LoadCSV(CSVFile, 
False)
    
End Sub

    
'
    ' Load CSV - Has Header
    '
    Public Sub LoadCSV(ByVal CSVFile As StringByVal HasHeader As Boolean)
        mHeader 
= HasHeader
        SetupRegEx()

        
If File.Exists(CSVFile) = False Then
            
Throw New Exception(CSVFile & " does not exist.")
        
End If

        
If Not dsCSV Is Nothing Then
            dsCSV.Clear()
            dsCSV.Tables.Clear()
            dsCSV.Dispose()
            dsCSV 
= Nothing
        
End If

        dsCSV 
= New DataSet("CSV")
        dsCSV.Tables.Add(
"CSVData")

        
Dim sr As New StreamReader(CSVFile)
        
Dim idx As Integer
        
Dim bFirstLine As Boolean = True
        
Dim dr As DataRow

        
Do While sr.Peek > -1
            ProcessLine(sr.ReadLine())

            
'
            ' Create Columns
            '
            If bFirstLine = True Then
                
For idx = 0 To mData.GetUpperBound(0)
                    
If mHeader = True Then
                        dsCSV.Tables(
"CSVData").Columns.Add(mData(idx), GetType(String))
                    
Else
                        dsCSV.Tables(
"CSVData").Columns.Add("Column" & idx, GetType(String))
                    
End If
                
Next
            
End If

            
'
            ' Add Data
            '
            If Not (bFirstLine = True And mHeader = TrueThen
                dr 
= dsCSV.Tables("CSVData").NewRow()

                
For idx = 0 To mData.GetUpperBound(0)
                    dr(idx) 
= mData(idx)
                
Next

                dsCSV.Tables(
"CSVData").Rows.Add(dr)
                dsCSV.AcceptChanges()
            
End If

            bFirstLine 
= False
        
Loop

        sr.Close()
    
End Sub

    
'
    ' Load CSV - Custom Separator
    '
    Public Sub LoadCSV(ByVal CSVFile As StringByVal Separator As Char)
        LoadCSV(CSVFile, Separator, 
False)
    
End Sub

    
'
    ' Load CSV - Custom Separator and Has Header
    '
    Public Sub LoadCSV(ByVal CSVFile As StringByVal Separator As CharByVal HasHeader As Boolean)
        mSeparator 
= Separator
        
Try
            LoadCSV(CSVFile, HasHeader)
        
Catch ex As Exception
            
Throw New Exception("CSV Error", ex)
        
End Try
    
End Sub

    
'
    ' Load CSV - Custom Separator, Text Qualifier and Has Header
    '
    Public Sub LoadCSV(ByVal CSVFile As StringByVal Separator As CharByVal TxtQualifier As Char)
        LoadCSV(CSVFile, Separator, TxtQualifier, 
False)
    
End Sub

    
'
    ' Load CSV - Custom Separator, Text Qualifier and Has Header
    '
    Public Sub LoadCSV(ByVal CSVFile As StringByVal Separator As CharByVal TxtQualifier As CharByVal HasHeader As Boolean)
        mSeparator 
= Separator
        mTextQualifier 
= TxtQualifier
        
Try
            LoadCSV(CSVFile, HasHeader)
        
Catch ex As Exception
            
Throw New Exception("CSV Error", ex)
        
End Try
    
End Sub
#End Region
#Region " Process Line "
    
'
    ' Process Line
    '
    Private Sub ProcessLine(ByVal sLine As String)
        
Dim sData As String
        
Dim iSep As Integer
        
Dim iQuote As String
        
Dim m As Match
        
Dim idx As Integer
        
Dim mc As MatchCollection
        
Dim bLastField As Boolean = False

        
Erase mData
        sLine 
= sLine.Replace(ControlChars.Tab, "    "'Replace tab with 4 spaces
        sLine = sLine.Trim

        
Do While bLastField = False
            sData 
= ""

            
If regQuote.IsMatch(sLine) Then
                mc 
= regQuote.Matches(sLine)
                
'
                ' "text",<rest of the line>
                '
                m = regQuote.Match(sLine)
                sData 
= m.Groups(2).Value
                sLine 
= m.Groups(5).Value
            
ElseIf regQuoteLast.IsMatch(sLine) Then
                
'
                ' "text"
                '
                m = regQuoteLast.Match(sLine)
                sData 
= m.Groups(2).Value
                sLine 
= ""
                bLastField 
= True
            
ElseIf regNormal.IsMatch(sLine) Then
                
'
                ' text,<rest of the line>
                '
                m = regNormal.Match(sLine)
                sData 
= m.Groups(1).Value
                sLine 
= m.Groups(3).Value
            
ElseIf regNormalLast.IsMatch(sLine) Then
                
'
                ' text
                '
                m = regNormalLast.Match(sLine)
                sData 
= m.Groups(0).Value
                sLine 
= ""
                bLastField 
= True
            
Else
                
'
                ' ERROR!!!!!
                '
                sData = ""
                sLine 
= ""
                bLastField 
= True
            
End If

            sData 
= sData.Trim
            sLine 
= sLine.Trim

            
If mData Is Nothing Then
                
ReDim mData(0)
                idx 
= 0
            
Else
                idx 
= mData.GetUpperBound(0+ 1
                
ReDim Preserve mData(idx)
            
End If

            mData(idx) 
= sData
        
Loop
    
End Sub
#End Region
#Region " Regular Expressions "
    
'
    ' Set up Regular Expressions
    '
    Private Sub SetupRegEx()
        
Dim sQuote As String = "^(%Q)(.*)(%Q)(s*%S)(.*)$"
        
Dim sNormal As String = "^([^%S]*)(s*%S)(.*)$"
        
Dim sQuoteLast As String = "^(%Q)(.*)(%Q$)"
        
Dim sNormalLast As String = "^.*$"
        
Dim sSep As String
        
Dim sQual As String

        
If Not regQuote Is Nothing Then regQuote = Nothing
        
If Not regNormal Is Nothing Then regNormal = Nothing
        
If Not regQuoteLast Is Nothing Then regQuoteLast = Nothing
        
If Not regNormalLast Is Nothing Then regNormalLast = Nothing

        sSep 
= mSeparator
        sQual 
= mTextQualifier

        
If InStr(".$^{[(|)]}*+?", sSep) > 0 Then sSep = "" & sSep
        
If InStr(".$^{[(|)]}*+?", sQual) > 0 Then sQual = "" & sQual

        sQuote 
= sQuote.Replace("%S", sSep)
        sQuote 
= sQuote.Replace("%Q", sQual)
        sNormal 
= sNormal.Replace("%S", sSep)
        sQuoteLast 
= sQuoteLast.Replace("%Q", sQual)

        regQuote 
= New Regex(sQuote, RegexOptions.IgnoreCase + RegexOptions.RightToLeft)
        regNormal 
= New Regex(sNormal, RegexOptions.IgnoreCase + RegexOptions.RightToLeft)
        regQuoteLast 
= New Regex(sQuoteLast, RegexOptions.IgnoreCase + RegexOptions.RightToLeft)
        regNormalLast 
= New Regex(sNormalLast, RegexOptions.IgnoreCase + RegexOptions.RightToLeft)
    
End Sub
#End Region
#Region " Save As "
    
'
    ' Save data as XML
    '
    Public Sub SaveAsXML(ByVal sXMLFile As String)
        
If dsCSV Is Nothing Then Exit Sub
        dsCSV.WriteXml(sXMLFile)
    
End Sub

    
'
    ' Save data as CSV
    '
    Public Sub SaveAsCSV(ByVal sCSVFile As String)
        
If dsCSV Is Nothing Then Exit Sub

        
Dim dr As DataRow
        
Dim sLine As String
        
Dim sw As New StreamWriter(sCSVFile)
        
Dim iCol As Integer

        
For Each dr In dsCSV.Tables("CSVData").Rows
            sLine 
= ""
            
For iCol = 0 To dsCSV.Tables("CSVData").Columns.Count - 1
                
If sLine.Length > 0 Then sLine &= mSeparator
                
If Not dr(iCol) Is DBNull.Value Then
                    
If InStr(dr(iCol), mSeparator) > 0 Then
                        sLine 
&= mTextQualifier & dr(iCol) & mTextQualifier
                    
Else
                        sLine 
&= dr(iCol)
                    
End If
                
End If
            
Next

            sw.WriteLine(sLine)
        
Next

        sw.Flush()
        sw.Close()
        sw 
= Nothing
    
End Sub
#End Region
#Region " Properties "
    
'
    ' Separator Property
    '
    Public Property Separator() As Char
        
Get
            
Return mSeparator
        
End Get
        
Set(ByVal Value As Char)
            mSeparator 
= Value
            SetupRegEx()
        
End Set
    
End Property

    
'
    ' Qualifier Property
    '
    Public Property TextQualifier() As Char
        
Get
            
Return mTextQualifier
        
End Get
        
Set(ByVal Value As Char)
            mTextQualifier 
= Value
            SetupRegEx()
        
End Set
    
End Property

    
'
    ' Dataset Property
    '
    Public ReadOnly Property CSVDataSet() As DataSet
        
Get
            
Return dsCSV
        
End Get
    
End Property
#End Region
#Region " Dispose and Finalize "
    
'
    ' Dispose
    '
    Public Sub Dispose() Implements System.IDisposable.Dispose
        Dispose(
True)
    
End Sub

    
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        
If Disposed Then Exit Sub

        
If disposing Then
            Disposed 
= True

            GC.SuppressFinalize(
Me)
        
End If

        
If Not dsCSV Is Nothing Then
            dsCSV.Clear()
            dsCSV.Tables.Clear()
            dsCSV.Dispose()
            dsCSV 
= Nothing
        
End If
    
End Sub

    
'
    ' Finalize
    '
    Protected Overrides Sub Finalize()
        Dispose(
False)
        
MyBase.Finalize()
    
End Sub
#End Region
End Class

 

操作CSV

Imports System.IO
Public Class Get_all_data_csv
    Inherits System.Web.UI.Page
    Dim dsCSV As DataSet
    Dim mSeparator As Char = ","
    Dim mTextQualifier As Char = """"
    Dim mData() As String
    Dim mHeader As Boolean
    Dim dsCSV_upload As DataSet
    Dim mSeparator_upload As Char = ","
    Dim mTextQualifier_upload As Char = """"
#Region " Web Form 設計工具產生的程式碼 "

    '此為 Web Form 設計工具所需的呼叫。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    '注意: 下列預留位置宣告是 Web Form 設計工具需要的項目。
    '請勿刪除或移動它。
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: 此為 Web Form 設計工具所需的方法呼叫
        '請勿使用程式碼編輯器進行修改。
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Session("session_site") = "" Then
            Response.Redirect("session.aspx")
        Else
            Dim num As Integer
            num = 1
            Dim last_vendor, last_mawb, last_org, str_sql As String
            Dim sCSVFile As String
            Dim file As String = "input_download.csv"
            sCSVFile = Server.MapPath("./") + "Upload/"
            Dim now_date = DateTime.Now.ToString("yyyyMMddHHmmss")
            sCSVFile = sCSVFile & now_date & file
            str_sql = Session("str_sql")
            Dim iCol As Integer
            dsCSV_upload = GetDataSet(str_sql)
            If dsCSV_upload Is Nothing Then Exit Sub
            Dim dr As DataRow
            Dim sLine As String
            Dim sw As New StreamWriter(sCSVFile)         
            sLine = "NO,DF Site,BU,DF_Status,Screen Down,FA Code,Model,PartNo,SN,DF Test Date,DF Input Date,Failure Symptom,Fail Station,Chasis SN,Root Cause,QE approve,PM approve,QE Approve Date,SA#,STO#,STO#&SA# DATE,Tracking,Tracking Date,LH Date,Complete Date,Week,DFSite Owner,LH Owner,Packing,Packing_date,"
            sw.WriteLine(sLine)
            For Each dr In dsCSV_upload.Tables(0).Rows
                sLine = ""
                For iCol = 0 To dsCSV_upload.Tables(0).Columns.Count - 1
                    If sLine.Length > 0 Then sLine &= mSeparator_upload
                    If Not dr(iCol) Is DBNull.Value Then
                        If InStr(dr(iCol), mSeparator_upload) > 0 Then
                            If iCol = 0 Then
                                sLine &= num
                                num = num + 1
                            ElseIf iCol > 0 Then
                                If iCol = 4 Then
                                    If dr(iCol) = "" Then
                                        sLine &= "N"
                                    Else
                                        sLine &= "Y"
                                    End If
                                Else
                                    If iCol <= 29 Then
                                        sLine &= mTextQualifier & dr(iCol) & mTextQualifier
                                    End If
                                End If

                            End If
                        Else

                            If iCol = 0 Then
                                sLine &= num
                                num = num + 1
                            ElseIf iCol > 0 Then
                                If iCol = 4 Then
                                    If dr(iCol) = "" Then
                                        sLine &= "N"
                                    Else
                                        sLine &= "Y"
                                    End If
                                Else
                                    If iCol <= 29 Then
                                        sLine &= dr(iCol)
                                    End If
                                End If
                            End If
                        End If
                    End If
                Next
                sw.WriteLine(sLine)
            Next
            sw.Flush()
            sw.Close()
            sw = Nothing
            Response.Redirect("upload/" & now_date & file)
        End If
    End Sub
End Class

 

上傳csv

Imports System.IO
Public Class upload_input
    Inherits System.Web.UI.Page
    Dim dsCSV As DataSet
    Dim mSeparator As Char = ","
    Dim mTextQualifier As Char = """"
    Dim mData() As String
    Dim mHeader As Boolean
    Dim sLine As String
    Dim mCSV As New CSVData
    Dim dsCSV_upload As DataSet
    Dim mSeparator_upload As Char = ","
    Protected WithEvents IBtnSubmit As System.Web.UI.WebControls.ImageButton
    Protected WithEvents TD2 As System.Web.UI.HtmlControls.HtmlTableCell
    Protected WithEvents FilePath As System.Web.UI.HtmlControls.HtmlInputFile
    Dim mTextQualifier_upload As Char = """"

#Region " Web Form 設計工具產生的程式碼 "

    '此為 Web Form 設計工具所需的呼叫。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
  
 
    '注意: 下列預留位置宣告是 Web Form 設計工具需要的項目。
    '請勿刪除或移動它。
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: 此為 Web Form 設計工具所需的方法呼叫
        '請勿使用程式碼編輯器進行修改。
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在這裡放置使用者程式碼以初始化網頁
        If Session("session_site") = "" Then
            Response.Redirect("session.aspx")
        End If
    End Sub

    Private Sub Read_csv(ByVal strPath As String)
        mCSV.Separator = ","
        mCSV.TextQualifier = """"
        mCSV.LoadCSV(Server.MapPath("./") + strPath, True)
        Dim dc As DataColumn
        Dim dr As DataRow
        Dim str_insert As String
        Dim arraylist1 As New ArrayList
        Dim arraylist2 As New ArrayList
        Dim idx, get_workorderqty As Integer
        For Each dc In mCSV.CSVDataSet.Tables(0).Columns
            arraylist1.Add(dc.ColumnName)
        Next
        For Each dr In mCSV.CSVDataSet.Tables(0).Rows
            sLine = ""
            For idx = 1 To mCSV.CSVDataSet.Tables(0).Columns.Count - 1
                arraylist2.Add(dr(idx))
            Next
            dr(1) = Convert.ToString(dr(1)).ToUpper
            If dr(1) = Session("session_site") Then
                Dim du As DataView
                Dim dv As DataView
                Dim str_sql As String
                Dim count1 As Integer
                Dim sql_str, rohs_status As String
                Try

                    sql_str = "select rohs_value from rma_sn_rohs where charIndex(pre_part_no,'" & dr(5) & "')>0 and  sn_start<'" & dr(7) & "' and  ((len(sn_end)-len('" & dr(7) & "') <0) or ((len(sn_end)-len('" & dr(7) & "') =0 and sn_end>'" & dr(7) & "') or ((len(sn_end)-len('" & dr(7) & "') =0 and sn_end like '9999')))) "
                    dv = adodata_view(sql_str)
                    If dv.Count > 0 Then
                        rohs_status = dv.Item(0).Row(0)
                    Else
                        rohs_status = "NON-ROHS"
                    End If
                Catch ex As Exception
                    rohs_status = "NON-ROHS"
                End Try

                Dim strSQL As String
                Dim dp As DataView
                str_sql = "select model,bu from pn_model where '" & dr(5) & "' like  p_n +'%' "
                Try
                    dp = adodata_view(str_sql)
                    If dp.Count <> 0 Then
                        dr(4) = dp.Item(0).Item("model")
                        dr(2) = dp.Item(0).Item("bu")
                    End If
                Catch ex As Exception
                    Response.Write(ex.Message)
                End Try

                str_sql = "select s_n from Production_List  where s_n='" & dr(7) & "' and foxconn_states<>'shipped' and DF_Input_Date>getdate()-14  "
                Try
                    du = adodata_view(str_sql)
                    If du.Count = 0 Then
                        If dr(7).Length = 11 Or dr(7).Length = 8 Then
                            If dr(3) = "VD" Or dr(3) = "VD-HUB" Or dr(3) = "VD-PD (Production)" Or dr(3) = "VD-Undispatch" Or dr(3) = "VVD-WH (Warehouse)" Or dr(3) = "FD" Then
                                dr(16) = "Pending LH Enginner Approval"
                            End If
                            If dr(3) = "NDF" Then
                                dr(16) = "NDF"
                            End If
                            If dr(3) = "DF-Scrap" Then
                                dr(16) = "DF-Scrap"
                            End If
                            If dr(16) = "" Then
                                dr(16) = "Pending LH Enginner Approval"
                            End If

                            If dr(12) = "" Then
                                dr(12) = Right("000" + CStr(DatePart("WW", Now)), 2)
                            Else
                                Try
                                    dr(12) = Convert.ToInt32(dr(12))
                                Catch ex As Exception
                                    RegisterStartupScript(" ", "<script>alert('The Input week arise error!pls check it')</script>")
                                    Exit Sub
                                End Try                            
                            End If
                            Try
                                dr(11) = Convert.ToDateTime(dr(11)).ToString("yyyy/MM/dd")
                            Catch ex As Exception
                                RegisterStartupScript(" ", "<script>alert('The DF TEST Date arise error!pls check it,Format is  yyyy/MM/dd')</script>")
                                Exit Sub
                            End Try
                            dr(1) = change_data(dr(1))
                            dr(2) = change_data(dr(2))
                            dr(2) = Convert.ToString(dr(2)).ToUpper
                            dr(16) = change_data(dr(16))
                            dr(15) = change_data(dr(15))
                            dr(3) = change_data(dr(3))
                            dr(4) = change_data(dr(4))
                            dr(5) = change_data(dr(5))

                            dr(7) = change_data(dr(7))
                            rohs_status = change_data(rohs_status)
                            dr(9) = change_data(dr(9))
                            dr(10) = change_data(dr(10))
                            dr(13) = change_data(dr(13))
                            dr(14) = change_data(dr(14))


                            str_insert = "insert into Production_List (DF_Site,BU,DF_Status,Root_Cause,pr_an,Model, PartNo, S_N,Rohs_status,chasis_sn,defect_location,DF_Test_Date,Failure_Symptom, Fail_Station, Week_input) "
                            str_insert = str_insert + "values ('" & dr(1) & "','" & dr(2) & "','" & dr(16) & "','" & dr(15) & "','" & dr(3) & "','" & dr(4) & "','" & dr(5) & "','" & dr(7) & "','" & rohs_status & "','" & dr(9) & "','" & dr(10) & "','" & dr(11) & "','" & dr(13) & "','" & dr(14) & "','" & dr(12) & "')"
                            execsql(str_insert)
                            RegisterStartupScript(" ", "<script>alert('upload success!!')</script>")
                            HIS("ACCOUNT:[" & Session("username") & " " & Trim(dr(10)) & "]insert successful!", 0, Me.Page)
                        Else
                            RegisterStartupScript(" ", "<script>alert('Pls make sure the length of the s_n!')</script>")
                            Exit Sub
                        End If
                    Else
                        RegisterStartupScript(" ", "<script>alert('The s/n have exist!!')</script>")
                        Exit Sub
                    End If
                Catch ex As Exception
                    RegisterStartupScript(" ", "<script>alert('Add fail!!')</script>")
                End Try
            Else
                RegisterStartupScript(" ", "<script>alert('You have no right to upload this data!!')</script>")
            End If
        Next
    End Sub

    Public Function change_data(ByVal str As String) As String
        str = Server.UrlEncode(str)       
        str = Replace(str, "%0d%0", " ")
        str = Replace(str, ",", " ;")
        str = Replace(str, "''", "'")
        change_data = Server.UrlDecode(str)
    End Function

    Private Sub IBtnSubmit_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles IBtnSubmit.Click
        Dim CREATE_BY As String = Session("UserId")
        Dim COMMITMPS As String = "COMMITMPS"
        Dim EMP_NO, EMP_NAME, SEX, EDU_LEVEL, GRADING, GRADING_TYPE, POSITION, CONTROL_TYPE, JOIN_DATE, DPT, ENTERPRISE_ID, TOP_ENTERPRISE_ID As String
        Dim StrSql, strPath, strName, strLen, File_path, IFUPLOAD As String
        strPath = "Upload/"
        IFUPLOAD = "Y"
        Dim get_file = Path.GetExtension(FilePath.Value)
        If get_file = ".csv" Then
            If Not FilePath.PostedFile.ContentLength > 0 Then
                RegisterStartupScript(" ", "<script>alert('The File is not found,please checked!!')</script>")
                Exit Sub
            End If
            If Not Directory.Exists(Server.MapPath(strPath)) Then
                RegisterStartupScript(" ", "<script>alert('SavePath is not exists,Please checked.!!')</script>")
                Exit Sub
            End If
            strName = Path.GetFileName(FilePath.PostedFile.FileName)
            strLen = Format(CLng(FilePath.PostedFile.ContentLength / 1024), "##,###,###,###") & "K"
            strPath = strPath & COMMITMPS & DateTime.Now.ToString("yyyyMMddHHmmss") & Path.GetExtension(FilePath.PostedFile.FileName)
            If File.Exists(strPath) Then
                RegisterStartupScript(" ", "<script>alert('File is exists,Please Rename.!!')</script>")
                Exit Sub
            End If
            FilePath.PostedFile.SaveAs(Server.MapPath(strPath))
            Call Read_csv(strPath)
        Else
            RegisterStartupScript(" ", "<script>alert('Please make sure the file is csv format.!!')</script>")
        End If
    End Sub
End Class

《5G通信中GFDM技术的MATLAB模拟研究》 5G技术作为当前通信领域的核心技术,以其高速率、低时延和大连接能力,为智能交通、远程医疗等新兴应用场景提供了关键支撑。其中,GFDM(广义滤波离散多音调)作为一种多载波调制方案,因其在资源分配上的灵活性和频谱利用率较高,受到广泛关注。该文件“Generalized-GFDM-Framework--master.rar”提供了基于MATLAB的GFDM算法实现,适合作为初学者了解5G通信技术的参考资料。 GFDM属于非正交多载波技术,其核心在于将时频资源组合为复数块,并通过滤波操作优化信号质量,从而降低干扰。相较于传统OFDM,GFDM在帧结构上更具适应性,能够更有效地应对信道变化,并在能效和频谱利用方面表现更优。MATLAB作为一款功能强大的计算与仿真平台,广泛应用于通信系统的开发与测试。 在MATLAB中实现GFDM系统,需首先掌握其基本结构,包括信号生成、滤波器配置以及调制方式的设定等。该框架可能包含以下几个主要部分: 1. **信号生成**:通过子载波数据经过滤波处理后合成完整符号,涉及傅里叶变换、滤波器应用及子载波映射等操作。 2. **滤波器配置**:选择满足系统需求的滤波器,如低通、带通等,需考虑其阻带抑制、过渡带宽度等参数。MATLAB提供了多种滤波器设计方法,如fir1、equiripple等。 3. **调制映射**:根据不同的调制方式(如QAM、QPSK),生成对应的星座图,并将符号映射至各子载波。 4. **信道建模**:模拟无线信道中的多径、衰落等现象,以评估系统在真实环境下的表现。 5. **接收处理**:包括滤波、FFT逆变换、信道估计与均衡等步骤,用于恢复发送的数据。 6. **性能分析**:通过误码率、频谱利用率等指标,评估系统在不同信道条件下的表现。 通过学习该MATLAB代码库,不仅能够理解GFDM的理论基础,还能通过实际编程加深对其工作机制的掌握,提高算法实现能力。其中提到的“movewu2”和“wingggr”可能为特定函数或模块,具体功能需结合代码内容进一步分析。该资源为通信技术研究者和学习者提供了实践平台,有助于深入理解5G通信系统中的GFDM技术,为后续研究与开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 半导体行业标准合集:SEMI标准解析 #### 一、概述 SEMI(Semiconductor Equipment and Materials International)作为全球领先的行业协会之一,在半导体制造及相关领域内制定了广泛的标准和指南,旨在确保产品的互操作性、兼容性和安全性。本文将深入探讨SEMI E1-0697这一标准中的重要内容——《3英寸、100毫米、125毫米及150毫米塑料和金属晶圆载体规格》。 #### 二、SEMI E1-0697标准详解 ##### 1. 标准范围与目标 SEMI E1-0697标准主要定义了用于加工和处理3英寸(约76.2毫米)、100毫米、125毫米及150毫米直径晶圆的塑料和金属载体的尺寸要求。该标准适用于各种类型的晶圆载体,并且分为两种分类: - **通用用途**:涵盖了3英寸、100毫米、125毫米及150毫米晶圆的尺寸。 - **自动运输用途**:特别针对自动化晶圆加工设备对接口的要求,适用于125毫米和150毫米晶圆的尺寸。 ##### 2. 尺寸要求 为了符合SEMI E1-0697标准,晶圆载体必须在规定的尺寸范围内制造,并且在按照制造商推荐的方法使用时保持尺寸稳定。这意味着载体的设计和制造必须满足严格的公差要求,以确保与自动化设备的良好配合以及晶圆的安全处理。 ##### 3. 安全考虑 虽然该标准未明确涉及安全问题,但在实际应用中,晶圆载体的安全性至关重要。制造商应遵循相关的安全指南和规定,确保产品在整个生命周期内的安全性。 #### 三、SEMI标准体系 SEMI标准不仅限于晶圆载体的尺寸要求,还覆盖了广泛的领域,如: - **设备自动化硬件**:规范了半导体设备中的机械部件和系统的标准化接口,以实现设备之间的无缝集成。 - **设备自动化软件**:定义了软件接口和通信协议,支持设备间的数据交换和控制。 - **设施**:包括了对半导体制造设施的设计、建设和维护的要求。 - **平板显示**:针对平板显示器生产过程中的材料和工艺制定标准。 - **气体**:涉及到半导体制造过程中使用的特殊气体的质量和安全要求。 - **材料**:涵盖了用于制造半导体器件的各种材料的标准。 - **光刻**:定义了光刻技术中的关键参数和技术要求。 - **封装**:针对半导体器件的封装技术提供指导。 - **过程化学品**:制定了用于半导体制造过程中的化学品的标准。 - **安全指南**:提供了关于半导体生产和使用过程中的安全措施的建议。 - **硅材料与过程控制**:针对硅基半导体材料的特性和制造过程制定标准。 - **可追溯性**:确保半导体产品从原材料到成品的整个生命周期中的可追溯性。 #### 四、结论 SEMI标准对于半导体行业的发展具有重要的意义,它不仅提高了设备和材料的兼容性与互操作性,还促进了行业的整体技术水平提升。通过实施这些标准,可以有效减少制造成本,提高生产效率,同时保证产品的质量和安全性。对于从事半导体制造的企业和个人来说,深入了解并遵循SEMI标准是至关重要的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值