C#中如何将剪贴板内容转换为DataTable?
将剪贴板内容转换为DataTable的实现尝试
最近我在折腾把剪贴板里的内容转换成DataTable,参考了一段核心代码来推进,下面是具体的实现片段和关键逻辑:
核心实现代码(C#):
private void PasteFromExcel() { DataTable tbl = new DataTable(); tbl.TableName = "ImportedTable"; // 读取剪贴板内容并按行拆分 List<string> data = new List<string>(ClipboardData.Split('\n')); bool firstRow = true; // 移除最后一行可能存在的空行(复制Excel时常出现) if (data.Count > 0 && string.IsNullOrWhiteSpace(data[data.Count - 1])) { data.RemoveAt(data.Count - 1); } foreach (string iterationRow in data) { // 按制表符拆分单元格(Excel复制的内容默认用\t分隔单元格) string[] row = iterationRow.Split('\t'); if (firstRow) { // 第一行作为表头,创建DataTable的列 foreach (string header in row) { tbl.Columns.Add(header.Trim()); } firstRow = false; } else { // 后续行作为数据行,去除单元格首尾空白后添加到DataTable tbl.Rows.Add(row.Select(cell => cell.Trim()).ToArray()); } } }
关键细节说明
- 处理剪贴板内容时,先按换行符
\n拆分所有行,同时移除最后可能的空行,避免无效的空数据行干扰 - 假设剪贴板内容来自Excel复制:Excel复制的文本默认用制表符
\t分隔单元格,用换行分隔行,这是这个实现的前提 - 第一行被当作DataTable的表头,自动创建对应列;后续每行作为数据行添加,同时会去除每个单元格的首尾空白,避免格式问题
内容的提问来源于stack exchange,提问作者Gert Lõhmus
相关产品推荐
相关产品推荐

