翻譯|使用教程|編輯:吉煒煒|2024-12-13 10:24:13.963|閱讀 159 次
概述:本文將探討如何使用 Spire.XLS for .NET 在 C# 程序中導入 Excel 數據到數據庫以及導出數據庫到 Excel 文件,實現數據在 Excel 和數據庫之間無縫流轉。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在現代企業環境中,確保 Excel 文件與數據庫之間順暢的數據交換對于優化工作流程和提升數據分析的效率至關重要。通過高效的數據導入導出操作,企業能夠充分利用數據庫的強大處理能力和 Excel 的靈活性,實現更精準的業務決策支持。
本文將探討如何使用 Spire.XLS for .NET 在 C# 程序中導入 Excel 數據到數據庫以及導出數據庫到 Excel 文件,實現數據在 Excel 和數據庫之間無縫流轉。
安裝 Spire.XLS for .NET
首先,您需要將 Spire.XLS for .NET 包含的 DLL 文件作為引用添加到您的 .NET 項目中。
PM> Install-Package Spire.XLS
用 C# 將 Excel 數據導入數據庫
借助 Spire.XLS for .NET,我們可以使用 Workbook.LoadFromFile() 方法載入 Excel 文件,并通過 CellRange.Value 屬性訪問單元格數據。然后,可以利用相關的數據庫操作模塊(如適用于 SQLite 的 System.Data.SQLite 模塊)將數據寫入數據庫,從而實現將 Excel 文件中的數據無縫導入到數據庫的功能。
以下步驟和代碼以 SQLite 數據庫為例,展示如何使用 C# 將 Excel 數據導入到數據庫:
using System.Data.SQLite;
using Spire.Xls;
namespace ExcelToSQLite
{
class Program
{
static void Main(string[] args)
{
// Excel文件的路徑
string excelFilePath = "示例.xlsx";
// SQLite數據庫的文件路徑
string sqliteFilePath = "output/Excel導入數據庫.db";
// 打開Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile(excelFilePath);
// 如果數據庫文件不存在,則創建一個新的數據庫文件
if (!File.Exists(sqliteFilePath))
{
SQLiteConnection.CreateFile(sqliteFilePath);
Console.WriteLine("新的SQLite數據庫文件已創建。");
}
// 創建SQLite連接
using (SQLiteConnection connection = new SQLiteConnection($"Data Source={sqliteFilePath};Version=3;"))
{
connection.Open();
// 遍歷每個工作表
foreach (Worksheet sheet in workbook.Worksheets)
{
string tableName = sheet.Name;
// 獲取第一行作為列名
var columns = sheet.Rows[0].CellList;
string createTableQuery = $"CREATE TABLE IF NOT EXISTS [{tableName}] (";
foreach (var column in columns)
{
createTableQuery += $"[{column.Value}] TEXT,";
}
createTableQuery = createTableQuery.TrimEnd(',') + ");";
// 創建表
using (SQLiteCommand createTableCommand = new SQLiteCommand(createTableQuery, connection))
{
createTableCommand.ExecuteNonQuery();
}
// 插入數據
for (int i = 1; i < sheet.Rows.Length; i++) // 跳過第一行
{
var row = sheet.Rows[i];
string insertQuery = $"INSERT INTO [{tableName}] VALUES (";
foreach (var cell in row.CellList)
{
insertQuery += $"'{cell.Value?.Replace("'", "''")}',"; // 防止SQL注入
}
insertQuery = insertQuery.TrimEnd(',') + ");";
using (SQLiteCommand insertCommand = new SQLiteCommand(insertQuery, connection))
{
insertCommand.ExecuteNonQuery();
}
}
}
connection.Close();
workbook.Dispose();
}
Console.WriteLine("Excel數據已成功寫入新的SQLite數據庫!");
}
}
}
用 C# 將數據從數據庫導出到 Excel 文件
同樣,我們可以利用數據庫操作模塊從數據庫中讀取數據,然后創建 Workbook 對象并使用 CellRange.Value 屬性將讀取的數據寫入 Excel 工作簿中,從而實現從數據庫導出數據到 Excel 文件的功能。
以下步驟和代碼以 SQLite 數據庫為例,展示了如何將數據庫中的數據導出到 Excel 文件:
using System.Data;
using System.Data.SQLite;
using Spire.Xls;
namespace SQLiteToExcel
{
class Program
{
static void Main(string[] args)
{
// SQLite數據庫的文件路徑
string sqliteFilePath = "示例.db";
// Excel文件的保存路徑
string excelFilePath = "output/數據庫導出到Excel.xlsx";
// 創建一個新的Workbook實例
Workbook workbook = new Workbook();
// 清空默認的工作表
workbook.Worksheets.Clear();
// 創建SQLite連接
using (SQLiteConnection connection = new SQLiteConnection($"Data Source={sqliteFilePath};Version=3;"))
{
connection.Open();
// 獲取所有表的名稱
DataTable tables = connection.GetSchema("Tables");
// 遍歷每個表
foreach (DataRow tableRow in tables.Rows)
{
string tableName = tableRow["TABLE_NAME"].ToString();
// 創建新的工作表
Worksheet sheet = workbook.Worksheets.Add(tableName);
// 獲取表數據
string selectQuery = $"SELECT * FROM [{tableName}]";
using (SQLiteCommand command = new SQLiteCommand(selectQuery, connection))
{
using (SQLiteDataReader reader = command.ExecuteReader())
{
// 獲取列名并寫入到第一行
for (int col = 0; col < reader.FieldCount; col++)
{
sheet.Range[1, col + 1].Value = reader.GetName(col);
}
// 設置表頭字體樣式
sheet.Rows[0].Style.Font.IsBold = true;
sheet.Rows[0].Style.Font.Size = 12;
// 插入數據行
int rowIndex = 2;
while (reader.Read())
{
for (int col = 0; col < reader.FieldCount; col++)
{
sheet.Range[rowIndex, col + 1].Value = reader.GetValue(col).ToString();
// 自動調整列寬
sheet.AutoFitColumn(col + 1);
}
// 設置數據行的字體樣式
sheet.Rows[rowIndex - 1].Style.Font.Size = 11;
rowIndex++;
}
}
}
}
connection.Close();
}
// 保存Excel文件
workbook.SaveToFile(excelFilePath);
workbook.Dispose();
Console.WriteLine("數據已成功導出到Excel文件!");
}
}
}
歡迎下載|體驗更多E-iceblue產品
獲取更多信息請咨詢慧都在線客服 ;技術交流Q群(767755948)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自:慧都網