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