Tôi đang tạo một ứng dụng nhỏ đọc tệp văn bản được phân tách bằng tab, thực hiện một vài thay đổi và sau đó tạo tệp .xlsx Excel 2007. Tôi đang gặp khó khăn trong việc tìm ra cách lấy các dòng từ một mảng chuỗi và ghi chúng vào tệp Excel, sử dụng các tab để chia dòng thành các cột. Tôi hy vọng rằng ý thức thực hiện.Làm thế nào tôi có thể viết một mảng chuỗi vào tệp Excel, với một dấu phân tách tab?
Tôi có string Lines[]
có chứa một cái gì đó như thế này:
Item1\tItem2\tItem3\tItem4
ItemA\tItemB\tItemC\tItemD
Item5\tItem6\tItem7\tItem8
tôi muốn tạo một tập tin Excel mà trông như thế này:
A B C D
Item1 Item2 Item3 Item4
ItemA ItemB ItemC ItemD
Item5 Item6 Item7 Item8
tôi đã cố gắng điều sau đây, nhưng nó chỉ puts dòng đầu tiên từ Lines[]
vào mỗi hàng và không tách thành các cột:
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;
Mọi lời khuyên sẽ được đánh giá cao! Cảm ơn bạn!
Dưới đây là đầu ra Tôi hiện đang nhận được:
A B C D
Item1\tItem2\tItem3\tItem4
Item1\tItem2\tItem3\tItem4
Item1\tItem2\tItem3\tItem4
EDIT: Tôi đã cập nhật mã của tôi với đề nghị @ jiverson và dòng hiện đang chia thành cột trong Excel, nhưng dòng đầu tiên từ Lines[]
vẫn xuất hiện trong mọi hàng trong Excel. Tại sao?
EDIT # 2: Dưới đây là đoạn code làm việc Cập nhật:
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
);
Tách chuỗi bằng cách sử dụng ''\ t'' và viết mỗi giá trị cho mỗi ô tương ứng – chancea