Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按长度将字符串拆分为Excel_C#_Excel - Fatal编程技术网

C# 按长度将字符串拆分为Excel

C# 按长度将字符串拆分为Excel,c#,excel,C#,Excel,我目前正在向Excel发送和拆分长行数据。每一次拆分都会打印一行。我想将现有数据中管道符号的拆分改为85个字符长度的拆分,但是,在85个字符处可能会将一个单词一分为二。如果要拆分一个实际单词,我将如何告诉它进一步拆分为数据。我知道如果在85岁的时候,它也应该找到一个空间。我很好奇要补充什么 // Add Description string DescriptionSplit = srcAddOnPanel.Controls["txtProductDescAddOn" + AddRow

我目前正在向Excel发送和拆分长行数据。每一次拆分都会打印一行。我想将现有数据中管道符号的拆分改为85个字符长度的拆分,但是,在85个字符处可能会将一个单词一分为二。如果要拆分一个实际单词,我将如何告诉它进一步拆分为数据。我知道如果在85岁的时候,它也应该找到一个空间。我很好奇要补充什么

// Add Description
      string DescriptionSplit = srcAddOnPanel.Controls["txtProductDescAddOn" + AddRow].Text;
      string[] descriptionParts = DescriptionSplit.Split('|');
      int i;
      for (i = 0; i <= descriptionParts.GetUpperBound(0); i++)
      {
          worksheet.Rows[currentRow].Insert();    //applies the description for the default bundle row
          worksheet.Rows[currentRow].Font.Bold = false;
          worksheet.Cells[currentRow, "E"].Value = rowIndent + descriptionParts[i].Trim();
          currentRow++;
      }
//添加说明
string DescriptionSplit=srcAddOnPanel.Controls[“txtProductDesAddon”+AddRow]。文本;
string[]descriptionParts=DescriptionSplit.Split(“|”);
int i;

对于(i=0;i您可以使用此方法(警告未完全测试)

intx=85;
int y=0;
int currentRow=0;
//循环,直到至少有85个字符可抓取
while(x+y
这是一个VBA版本,它似乎可以工作。正如我在评论中所建议的,它用空格分隔字符串,然后测试添加一个单词是否会使当前行的长度大于最大值(85)。与通常的情况一样,要正确填充最后一个单词是很困难的

如果这对您有效,那么修改为C#应该足够简单。如果不是这样,请告诉我:

Sub ParseRows()
Const ROW_LENGTH As Long = 85
Dim Text As String
Dim Words As Variant
Dim RowContent As String
Dim RowNum As Long
Dim i As Long

Text = ActiveCell.Text
Words = Split(Text, " ")
RowNum = 2

For i = LBound(Words) To UBound(Words)
    If Len(RowContent & Words(i) & " ") > ROW_LENGTH Then
        ActiveSheet.Range("A" & RowNum).Value = RowContent
        RowNum = RowNum + 1
        If i = UBound(Words) Then
            RowContent = Words(i)
        Else
            RowContent = ""
        End If
    Else
        RowContent = RowContent & Words(i) & " "
    End If
Next i
If RowContent <> "" Then ActiveSheet.Range("A" & RowNum).Value = RowContent
End Sub
子行()
常量行长=85
将文本变暗为字符串
作为变体的模糊词
将行内容设置为字符串
Dim RowNum尽可能长
我想我会坚持多久
Text=ActiveCell.Text
文字=拆分(文本,“”)
RowNum=2
对于i=LBound(单词)到UBound(单词)
如果Len(行内容和单词(i)和“”)>行长度,则
ActiveSheet.Range(“A”&RowNum).Value=RowContent
RowNum=RowNum+1
如果我=UBound(单词),那么
行内容=单词(i)
其他的
RowContent=“”
如果结束
其他的
RowContent=RowContent&Words(i)和“”
如果结束
接下来我
如果为RowContent“”,则为ActiveSheet.Range(“A”&RowNum)。值=RowContent
端接头

该方法将找到第一个空格字符的位置。将其与该方法结合起来,这样您就可以开始查看第85个位置,并将85添加到结果中。记住将空格字符连接到字符串的末尾,以便始终可以找到一些内容。如果您可以展示这些函数的一个非常棒的示例,请使用C考虑使用空格作为拆分字符,并使用下一组单词构建每一行,直到下一个单词创建的行长度超过85个字符。我可以使用空格分隔符,但我只是在获取85个字符时遇到了一点困难。不确定我是否必须放弃现有代码并重新开始,或者只是修改现有代码。
Sub ParseRows()
Const ROW_LENGTH As Long = 85
Dim Text As String
Dim Words As Variant
Dim RowContent As String
Dim RowNum As Long
Dim i As Long

Text = ActiveCell.Text
Words = Split(Text, " ")
RowNum = 2

For i = LBound(Words) To UBound(Words)
    If Len(RowContent & Words(i) & " ") > ROW_LENGTH Then
        ActiveSheet.Range("A" & RowNum).Value = RowContent
        RowNum = RowNum + 1
        If i = UBound(Words) Then
            RowContent = Words(i)
        Else
            RowContent = ""
        End If
    Else
        RowContent = RowContent & Words(i) & " "
    End If
Next i
If RowContent <> "" Then ActiveSheet.Range("A" & RowNum).Value = RowContent
End Sub