簡體   English   中英

C#控制台應用程序寫入Excel返回空單元格

[英]C# Console App Writing To Excel Is Returning Empty Cells

我被這個問題困擾了一段時間,似乎無法找到解決方法。 我已經閱讀了許多有關Stack Overflow的文章,但似乎沒有任何問題可以回答我的問題。 我遵循的教程都給出了不同的解決方案,但似乎都沒有用。

我正在嘗試將數據表中的DataTable寫入Excel電子表格。 我正在使用Microsoft.Office.Interop.Excel程序包,並且確實在具有管理員權限的PC上安裝了Excel。

在控制台應用程序的頂部,我有以下內容:

using Microsoft.Office.Interop.Excel;

我正在使用以下代碼創建excel電子表格,並在dtDataTable地方填充它:

            var excel = new Application();

            excel.Visible = false;
            excel.DisplayAlerts = false;

            var workBook = (Workbook)excel.Workbooks.Add(Type.Missing);
            var workSheet = (Worksheet)workBook.ActiveSheet;
            workSheet.Name = "Transformed Table";

            for(int row = 0; row < dt.Rows.Count; row++)
            {
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    workSheet.Cells[row + 2, i + 1] = dt.Rows[row][i].ToString();
                }
            }

            workBook.SaveAs("C:\\Users\\******\\Downloads\\test-file.xlsx");
            workBook.Close();
            excel.Quit();

最終結果是一張空白紙。

基於這篇文章中的建議: 如何將DataTable導出到Excel我能夠使用以下代碼來生成滿足我需要的csv文件:

            var dtLines = new List<string>();
            string[] columnNames = dt.Columns
                .Cast<DataColumn>()
                .Select(column => column.ColumnName)
                .ToArray();

            var header = string.Join(",", columnNames.Select(name => $"\"{name}\""));
            dtLines.Add(header);

            var valueLines = dt.AsEnumerable()
                .Select(row => string.Join(",", row.ItemArray.Select(val => $"\"{val}\"")));

            dtLines.AddRange(valueLines);

            File.WriteAllLines("excel.csv", dtLines);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM