0

我一直在用 C# 开发一个 Windows 应用程序。我的要求是打印一个预定义的 Excel 模板,其中包含给定订单号的数据库值。意味着,我必须从数据库(SQL Server)中检索数据并用数据库值替换预定义的单元格值(文本)(在 excel 模板中)。例如 -

在 Excel 单元格值中,“SENDER_NAME”将替换为“FEDEX”,“OrderNo”将替换为“1212”等等。我正在使用以下代码来做到这一点。

object missingValue = Type.Missing;

xlWorkBook = xlApp.Workbooks.Open(path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

xlWorkSheet.Cells.Replace("SENDER_NAME", "FEDEX", missingValue, missingValue, missingValue, missingValue, missingValue, missingValue);

我的问题是 - 当 excel 中给定单元格文本的数据库中不存在某些值时,它会被空白值替换,因此在打印时会留下空白。我必须减少那些空白?

我只是想要,那个空白区域不应该在打印中可见。问题是空单元格打印为空白空间,因此例如 AddressLine2 不在 Db 中。那么它将如下所示。

AddressLine1
EMPTYCELL
AddressLin3

我想要像这样的输出

AddressLine1
AddressLine3

有什么解决办法吗?

4

1 回答 1

1

您可以在 SQL 语句中使用 ISNULL(表达式或列,替换值)来删除电子表格中的 NULL 值。替换值将是''。请参阅http://msdn.microsoft.com/en-us/library/ms184325.aspx

编辑答案:

然后我建议你在 SQL 中构建一个分隔字符串并在 Excel 中打开它。不要使用逗号作为分隔符 - 使用分号或制表符,如下例所示:

分号分隔

SELECT 
CompanyName + ';' + 
Address1 + ';' + 
ISNULL(address2 + ';', '')+
State AS out_string  FROM customers

制表符分隔

SELECT 
CompanyName + char(9) + 
Address1 + char(9) + 
ISNULL(address2 + char(9), '') +
State AS out_string  FROM customers

通过在 ISNULL 函数调用中连接分隔符,您将在遇到空值时防止背靠背分隔符。在允许 NULL 值的所有列上使用 ISNULL 代码。

于 2012-10-01T19:15:22.707 回答