gpt4 book ai didi

c# - 如何使用制表符将字符串数组写入 Excel 文件?

转载 作者:太空狗 更新时间:2023-10-29 23:15:36 25 4
gpt4 key购买 nike

我正在创建一个小型应用程序,它读取制表符分隔的文本文件,进行一些更改,然后创建一个 Excel 2007 .xlsx 文件。我无法弄清楚如何从字符串数组中取出行并将它们写入 Excel 文件,使用选项卡将行分成列。我希望这是有道理的。

我有 string Lines[] 包含如下内容:

Item1\tItem2\tItem3\tItem4
ItemA\tItemB\tItemC\tItemD
Item5\tItem6\tItem7\tItem8

我想创建一个如下所示的 Excel 文件:

A      B      C      D
Item1 Item2 Item3 Item4
ItemA ItemB ItemC ItemD
Item5 Item6 Item7 Item8

我尝试了以下方法,但它只是将 Lines[] 的第一行放入每一行,并且没有分成列:

string Lines[] = GetLines();

Excel.Application xlApp;
Excel.Workbook xlWb;
Excel.Worksheet xlWs;
object misValue = System.Reflection.Missing.Value;

xlApp = new Excel.Application();
xlWb = xlApp.Workbooks.Add(misValue);
xlWs = (Excel.Worksheet)xlWb.Worksheets.get_Item(1);

Excel.Range c1 = (Excel.Range)xlWs.Cells[2, 1];
Excel.Range c2 = (Excel.Range)xlWs.Cells[2 + lines.Length, 1];

Excel.Range range = xlWs.get_Range(c1, c2);

range.Value = lines;
range.TextToColumns(
range,
Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited,
Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierNone,
false,
true // This is flag to say it is tab delimited
);

xlApp.Visible = true;

如有任何建议,我们将不胜感激!谢谢!

这是我目前得到的输出:

A                           B    C    D
Item1\tItem2\tItem3\tItem4
Item1\tItem2\tItem3\tItem4
Item1\tItem2\tItem3\tItem4

编辑:我已经根据@jiverson 的建议更新了我的代码,该行现在在 Excel 中被分隔成列,但是 Lines[] 的第一行仍然出现在每一行中卓越。为什么?

编辑 #2:这是更新后的工作代码:

Excel.Application xlApp;
Excel.Workbook xlWb;
Excel.Worksheet xlWs;
object misValue = System.Reflection.Missing.Value;

xlApp = new Excel.Application();
xlWb = xlApp.Workbooks.Add(misValue);
xlWs = (Excel.Worksheet)xlWb.Worksheets.get_Item(1);

int currentRow = 2;

string[] lines = GetLines();

for (int i = 0; i < lines.Length; i++)
{
string line = lines[i]; //get the current line

string[] values = line.Split('\t'); //split the line at the tabs

//
// .. i do some things to specific values here ..
//

lines[i] = String.Join("\t", values); //put the updated line back together

Excel.Range currentRange = (Excel.Range)xlWs.Cells[currentRow, 1]; //get the next row

currentRange.Value = lines[i]; //write the line to Excel

currentRow++;
}

Excel.Range c1 = (Excel.Range)xlWs.Cells[2, 1]; //get the first cell
Excel.Range c2 = (Excel.Range)xlWs.Cells[2 + lines.Length, 1]; //get the last cell

Excel.Range range = xlWs.get_Range(c1, c2); //set the range as the used area

range.TextToColumns( //split the row into columns
range,
Excel.XlTextParsingType.xlDelimited,
Excel.XlTextQualifier.xlTextQualifierNone,
false,
true // This is flag to say it is tab delimited
);

最佳答案

循环添加每一行,然后在设置范围值后将文本用于列:

    for (int i = 0; i < range.Rows.Count; i++) {
range.Rows[i].Value = lines[i];
range.Rows[i].TextToColumns(
range.Rows[i],
Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited,
Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierNone,
false,
true
);
}

MSDN Reference

关于c# - 如何使用制表符将字符串数组写入 Excel 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17863912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com